HDU1262-寻找素数对
2017-07-17 13:52
211 查看
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 13923 Accepted Submission(s): 7024
Problem Description
哥德巴赫猜想大家都知道一点吧.我们现在不是想证明这个结论,而是想在程序语言内部能够表示的数集中,任意取出一个偶数,来寻找两个素数,使得其和等于该偶数.
做好了这件实事,就能说明这个猜想是成立的.
由于可以有不同的素数对来表示同一个偶数,所以专门要求所寻找的素数对是两个值最相近的.
Input
输入中是一些偶整数M(5< M <=10000).
Output
对于每个偶数,输出两个彼此最接近的素数,其和等于该偶数.
Sample Input
20 30 40
Sample Output
7 13
13 17
17 23
刚开始未通过代码:
oj评测显示:
问题主要是:判断素数花费时间过度
100分C语言代码:
Total Submission(s): 13923 Accepted Submission(s): 7024
Problem Description
哥德巴赫猜想大家都知道一点吧.我们现在不是想证明这个结论,而是想在程序语言内部能够表示的数集中,任意取出一个偶数,来寻找两个素数,使得其和等于该偶数.
做好了这件实事,就能说明这个猜想是成立的.
由于可以有不同的素数对来表示同一个偶数,所以专门要求所寻找的素数对是两个值最相近的.
Input
输入中是一些偶整数M(5< M <=10000).
Output
对于每个偶数,输出两个彼此最接近的素数,其和等于该偶数.
Sample Input
20 30 40
Sample Output
7 13
13 17
17 23
刚开始未通过代码:
#include<stdio.h> #include<stdbool.h>//bool定义所需头文件 #define max 10000 int arr[max+1]; void Erat(int arr[max],int n) { int i,j; bool flag1=true; bool flag2=false; arr[1]=flag2; for(i=2;i<=n;i++) { arr[i]=flag1; } for(i=2;i<=n;i++) { if(arr[i]==flag1) { for(j=i*i;j<=n;j+=i) { arr[j]=flag2; } } } } int main() { int i,sum,count,j,min,diff; Erat(arr,max); while(scanf("%d",&sum)&&sum) { count=0; j=0; min=max; for(i=0;i<sum/2;i++) { if(arr[i]&&arr[sum-i]) { if(i!=sum-i) { diff=sum-2*i; if(diff<min) { min=diff; j=i; } } } } printf("%d %d\n",j,sum-j); } return 0; }
oj评测显示:
问题主要是:判断素数花费时间过度
100分C语言代码:
#include<stdio.h> #include<math.h> int f(int n)//判断是否为素数 { int temp,i; if(n==3) return 1; temp=n%6; if(temp!=1&&temp!=5) return 0; temp=sqrt(n); for(i=3;i<=temp;i+=2) if(n%i==0) return 0; return 1; } int main() //只要测试这两个奇数都是素数,就得到了差距最小的两个素数,输出即可 { int m,p; while(scanf("%d",&m)!=EOF) { p=m/2; if(p%2==0) p--; while(1) { if(p<=2) break; if(!f(p)) { p=p-2; continue; } if(f(m-p)) { printf("%d %d\n",p,m-p); break; } p-=2; } } return 0; }
相关文章推荐
- hdu1262寻找素数对<数论>
- hdu1262寻找素数对
- HDU1262:寻找素数对
- HDU1262 寻找素数对
- ACM-简单题之寻找素数对——hdu1262
- hdu1262寻找素数对
- HDU1262:寻找素数对(简单数论)
- 2014反汇编特训第一集:IDA逆向分析双重循环寻找素数
- 寻找素数对
- 寻找素数对 (数论)
- 寻找不大于n的素数
- acm 寻找素数对
- HDOJ&nbsp;&nbsp;1262&nbsp;&nbsp;&nbsp;寻找素数对
- (DS1.5.5)POJ 3306 Dirichlet's Theorem on Arithmetic Progressions(在一个数列之中寻找第n个素数)
- C#寻找素数
- hdoj-1262-寻找素数对
- hdu 1262 寻找素数对 数论 打表。
- 171106-寻找1000以内的素数【连续第十四天】
- 寻找素数对 (数论)
- HDU 1262 寻找素数对