乙個數,如果只有1和它本身兩個因數,這樣的數叫質數(或素數)。如2、3、5、7都是質數。
乙個數,如果除了1和它本身還有別的因數,這樣的數叫合數。如4、6、15、49都是合數。
1既不是質數,也不是合數。
#include#includeusing namespace std;
int main()
if(j * j > i)
cout << i << endl;
} return 0;
}
#include#include#includeusing namespace std;
int main()
if(j > sqrt(i))
cout << i << endl;
} return 0;
}
迴圈案例選講(階乘、質數)
整型在字元陣列中的儲存
其實整型在字元陣列中的儲存,就是將值轉化成ascii值進行儲存,類似於雜湊表的方式,乙個鍵對應乙個值,
我們只需要找到它的鍵,進而取出它的值即可使用。
所以我們不用擔心整型儲存到字元陣列中會變成字元型,因為我們儲存的是整型所對應的ascii值,而不是整型本身。
#include#define maxn 10000000
using namespace std;
char isprime[maxn+10];//不用int型,int型別占用4個位元組,char占用1個位元組。
//maxn至少+1,陣列下標是從0開始的,所以如果不+1,最大為a[maxn-1]
int main()
} }
for(int i = 2; i <= n; ++i)
} return 0;
}
篩法求素數 線性篩法求素數
2021年更新版 篩法求素數 線性篩法求素數 要理解篩法求素數首先要知道乙個定理,整數唯一分解定理 任意大於等於2的正整數都有且只有一種方式寫出其質因子的乘積表示式。a p1p2p3p4 pn pi是素數且pi pj eg 2 2 4 22 12 223 36 2233 也就是說任意乙個合數都能分成...
素數篩法求素數
素數篩類似於打表標記,預先處理掉非素數的數,即素數的倍數 任意非素數都可以由幾個素數相乘得到 於是效率比暴力求解快得多。埃氏篩法的效率為o n loglog n 簡單易懂,但是會重複標記,比如當i為2時,6會被標記掉,然而當i為3時,6又會被重複標記,這樣的重複訪問加大了時間複雜度,於是有了尤拉篩。...
篩法求素數
素數篩法就是每次把已知的素數的倍數曬去,篩掉前sqrt n 中素數的倍數就可以了 先把n個自然數按次序排列起來。1不是質數,也不是合數,要划去。第二個數2是質數留下來,而把2後面所有能被2整除的數都劃去。2後面第乙個沒劃去的數是3,把3留下,再把3後面所有能被3整除的數都劃去。3後面第乙個沒劃去的數...