hdu 1262 寻找素数对 数论 打表。

时间:2021-03-07 21:44:11

寻找素数对

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)

Total Submission(s): 8771    Accepted Submission(s): 4395

Problem Description
哥德巴赫猜想大家都知道一点吧.我们如今不是想证明这个结论,而是想在程序语言内部可以表示的数集中,随意取出一个偶数,来寻找两个素数,使得其和等于该偶数.

做好了这件实事,就能说明这个猜想是成立的.

因为能够有不同的素数对来表示同一个偶数,所以专门要求所寻找的素数对是两个值最相近的.
 
Input
输入中是一些偶整数M(5<M<=10000).
 
Output
对于每一个偶数,输出两个彼此最接近的素数,其和等于该偶数.
 
Sample Input
20 30 40
 
Sample Output
7 13
13 17
17 23
 就是打表。

没其它的。

#include <stdio.h>
#define MAX 10100 bool notPrime[MAX] ;
//int prime[MAX] ; int main()
{
for(int i = 2 ; i < MAX ; ++i)
{
for(int j = 2 ; j*i < MAX ; ++j)
{
notPrime[i*j] = true ;
}
}
notPrime[1] = true ;
int n ;
while(~scanf("%d",&n))
{
int mid = n/2 ;
for(int i = mid ; i < n ; ++i)
{
if(!notPrime[i])
{
for(int j = mid ; j > 1 ; --j)
{
if(!notPrime[j])
{
if(i+j==n)
{
printf("%d %d\n",j,i);
goto here ;
}
else if(i+j<n)
{
break ;
}
}
else if(i+j<n)
{
break ;
}
}
} }
here: ;
}
return 0 ;
}

与君共勉