如何求取素數呢?其實很簡單,思想呢就是找出所有整數p然後,刪去2*p,3*p。。。。。就好了?
大該怎麼做呢?
我們來真實資料
100以內有25個素數,10^3有168個,10^4有1229個,10^5有9592個,10^6有78498個,10^7有664579個
我們就有例項說明一下:
0~n的所有素數
#include #include #include using namespace std;
bool a[10000002];
int main()
}int sum = 0;
for ( i = 2;i <= n; i++ )
}printf ( "%d\n", sum );
printf ( "time used = %.2lfs\n", (double)clock()/clocks_per_sec); //用時
}
以上程式我們會發現,其真實用時會很多有2.51s之多,那麼如何改進呢?
這是因為我們有好多重複的步驟在裡面。
我下面直接說最快捷的方法了
#include #include #include #include #include #include using namespace std;
bool a[10000002];
int main()
}int sum = 0;
for ( i = 2;i <= n; i++ )
}printf ( "%d\n", sum );
printf ( "time used = %.2lfs\n", (double)clock()/clocks_per_sec);
}
我們會發現這個**會極大的提高時間效率,大概在0.42s
**菜鳥,如有錯誤,請多包涵!!!
如果有幫助記得鼓勵我一下,謝謝!!!
求素數,求因數的方法
素數的定義是 自己總結 只能被1和自身整除的數。注意 1.最小的素數是2。2.1 既不是素數也不是合數。3.素數不包括負數。一般的求解素數的方法是 include includeusing namespace std bool isprime int n int main void filterpr...
求質數 素數 的方法
質數是數學重要的一環,所謂質數,就是除了1和它本身外不存在任何因子的數。以下整理了一下c語言中質數的求法。問題 輸入乙個正整數n n 2 求不大於n的全部質數 方法一 迴圈法 思路 判斷乙個數n是不是質數,可以用2到 n之間的所有整數去除n,如果都不能整除,那麼n是質數。設計迴圈巢狀時盡量跳過一些不...
求素數的幾種方法
素數,也稱為質數,其只能被1或者自身整除的自然數 不包括1 換而言之,只有兩個正因數的自然數稱為素數。與之相對的比1大但不是素數的自然數稱為合數。1和0既不是素數也不是合數,合數由若干個質數相乘得到。顯然根據定義就能判斷乙個數n是否為素數,具體的,對其從2到sqrt n 進行除法,判斷是否存在餘數為...