for迴圈的進一步深入

2022-09-09 15:24:29 字數 843 閱讀 4023

哥德**猜想:即任一大於2的偶數都可寫成兩個質數之和。

例如18可以寫成5+13或者7+11。

輸入乙個正整數n(2~1000000),請問n可以寫成多少種不同兩個質數相加的結果?

這是原題,當我剛看到這道題的時候一點思路都沒有,經過一番思索,我想到了用for迴圈,但是該怎麼用,首先要把輸入數n的全部質因數找出來,在建立兩個for迴圈,第乙個for迴圈用來儲存第乙個質數,第二個for迴圈用來記錄第二個質數,然後把它們相加,如果和不是n,再利用第二個for迴圈讓第乙個質數加上第三個質數,就這樣迴圈,第二個for迴圈迴圈過一遍後,第乙個for再迴圈一次,然後第二個for再完整迴圈一遍,一直到第乙個for迴圈完,記錄成立的資料,但是提交後時間超時,然後我又換了一種寫法,還是一樣的寫法,就是只有乙個for迴圈讓它迴圈到n/2就行了 先判斷迴圈數i是否是n的因子,再判斷i是否為質數,如果是則讓a-i得到j然後再判斷j是否是質數,,如果是則記錄下來,這樣時間可以少一半。

//

#include

//#include

#include using

namespace

std;

intmain()

//判斷a是否是質數

}

if(i==0

) }

//驗證b是否是質數

if(m==0

) sum++;}}

cout

}

總結,在做題中如果遇到,找有幾種方法,或找次數的題一般先向for迴圈上想,如果想不通再換其他方法,因為這樣的題一般都可以用for迴圈解決。

20170724進一步深入Makefile

vim prog.c include include code.h int main void vim code.c include code.h int myfun int in vim code.h extern int myfun int gcc c code.c o code.o gcc c...

bufferedReader進一步理解

public static void main string args string mystring system.out.println 請輸入明文 bufferedreader buf new bufferedreader new inputstreamreader system.in try...

Looper Handler進一步學習

package com.test.looper import android.os.bundle import android.os.handler import android.os.handlerthread import android.os.looper import android.os....