搜索
熱搜: 活動 交友 discuz
查看: 3015|回復: 0
打印 上一主題 下一主題

[教學] 質數 - Sieve theory

[複製鏈接]
跳轉到指定樓層
1#
發表於 2008-2-17 17:22:19 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
#include<string.h>
#include<stdio.h>
#include<memory.h>
#define MAXSIEVE 20000000 // All prime numbers up to this
#define MAXSIEVEHALF 10000000
#define MAXSQRT 2237 // sqrt(MAXSIEVE)/2
#define isprime(n) (a[(n)>>4]&(1<<(((n)>>1)&7))) // Works when n is odd
char a[MAXSIEVE/16+2];
int b[107408];
int main(){
int i,j;
int input;
int counter=2;
memset(a,255,sizeof(a));
a[0]=0xFE;
for(i=1;i<MAXSQRT;i++) //從1到最大的可能質數
if (a[i>>3]&(1<<(i&7))) //如果那個數是質數
for(j=2*i*(i+1);j<MAXSIEVEHALF;j+=i+i+1) //把那的質數所有的倍數 都設為不是質數
a[j>>3]&=~(1<<(j&7));


return 0;
}
您需要登錄後才可以回帖 登錄 | 註冊

本版積分規則

本論壇為非營利之網路平台,所有文章內容均為網友自行發表,不代表論壇立場!若涉及侵權、違法等情事,請告知版主處理。


Page Rank Check

廣告刊登  |   交換連結  |   贊助我們  |   服務條款  |   免責聲明  |   客服中心  |   中央分站

手機版|中央論壇

GMT+8, 2024-5-2 14:53 , Processed in 0.020925 second(s), 16 queries .

Powered by Discuz!

© 2005-2015 Copyrights. Set by YIDAS

快速回復 返回頂部 返回列表