普通素数筛
Posted swallowblank
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了普通素数筛相关的知识,希望对你有一定的参考价值。
寻找素数对 HDU1262
哥德巴赫猜想大家都知道一点吧.我们现在不是想证明这个结论,而是想在程序语言内部能够表示的数集中,任意取出一个偶数,来寻找两个素数,使得其和等于该偶数.
做好了这件实事,就能说明这个猜想是成立的.
由于可以有不同的素数对来表示同一个偶数,所以专门要求所寻找的素数对是两个值最相近的.
由于可以有不同的素数对来表示同一个偶数,所以专门要求所寻找的素数对是两个值最相近的.
20 30 40
7 13 13 17 17 23
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 | #include<cstdio> #include<cstring> #include<iostream> #include<algorithm> #include<stack> using namespace std; void isPrime( int a[]) { for ( int i=0;i<10007;i++) { a[i] = 1; } a[0] = a[1] = 0; for ( int i=2;i<((10007+1)>>1);i++) { if (a[i]) { for ( int j=(i<<1);j<10007;j+=i) a[j] = 0; } } } int main(){ int prime[10007]; isPrime(prime); int a; while ( scanf ( "%d" ,&a)!=EOF) { a = (a>>1); int ans1 = a,ans2 = a; while (1) { if (prime[ans1] && prime[ans2]) break ; ans1--; ans2++; } printf ( "%d %d\n" ,ans1,ans2); } return 0; } |
以上是关于普通素数筛的主要内容,如果未能解决你的问题,请参考以下文章