自测-2 素数对猜想 (20分)

来源:互联网 发布:可以了陈奕迅 知乎 编辑:程序博客网 时间:2024/05/22 13:35
#include<stdio.h>int n,m,p;int d;int flag=0;int count=0;int  main(){scanf("%d",&n);d=n%2;if(d==0){n-=1;}for(m=n;m>=4;m-=2){for(int i=m-1;i>=2;i--){if(m%i==0){flag=1;break;}}if(flag==0){p=m-2;for(int i=p-1;i>=2;i--){if(p%i==0){flag=1;break;}}if(flag==0){count++;}}flag=0;}printf("%d",count);}

上述代码在最后一个测试点显示运行超时。

--------------------------分割线--------------------------

#include <stdio.h>int a[100000];int n;int i,j;int count=0;int k=0;int flag=0;int comp=0;int main(){scanf("%d",&n);a[0]=2;for(i=3;i<=n;i++){for(j=0;j<=k;j++){if(i%a[j]==0){flag=1;break;}}if(flag==0){a[++k]=i;comp=1;}flag=0;if(comp==1){if(a[k]-a[k-1]==2){count++;comp=0;}}}printf("%d",count);}
修改了一下:判断是否为素数时对比之前所有的素数;判断是否是素数对时直接前后判断。

测试通过。


0 0
原创粉丝点击