Time Limit: 1000/1000 MS (java/Others) Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 37570 Accepted Submission(s): 16394PRoblem Description把一个偶数拆成两个不同素数的和,有几种拆法呢? Input输入包含一些正的偶数,其值不会超过10000,个数不会超过500,若遇0,则结束。 Output对应每个偶数,输出其拆成不同素数的个数,每个结果占一行。 Sample Input
30260 Sample Output32 Source2007省赛集训队练习赛(2)这个题有一点需注意一下,把一个偶数拆成两个不同的素数,我第一次写这道题的时候就楞是没看到不同俩字。。。这里给出两种解法:#include<stdio.h>int main(){ int n; int a[5000]; int i,j,k=0; int s; a[0]=2; for(i=3;i<=10000;i++) { s=0; for(j=2;j<i;j++) { if(i%j==0) s++; } if(s==0) { k++; a[k]=i; } } while(scanf("%d",&n),n!=0) { int s1=0; for(j=0;a[j]<n/2;j++) { for(i=0;a[i]<n;i++) if(a[j]+a[i]==n) s1++; } printf("%d/n",s1); } return 0;}#include<stdio.h>#include<iostream>#include<math.h>using namespace std;int prime(int n){ int i; if(n==1||n==0) return -1; if(n==2||n==3) return 1; for(i=2;i<=sqrt(n);i++) { if(n%i==0) break; } if(i>sqrt(n)) return 1; return -1;}int main(){ int n,i; while(cin>>n,n!=0) { int ants=0; for(i=2;i<(n+1)/2;i++) { if(prime(i)==1&&prime(n-i)==1) ants++; } cout<<ants<<endl; } return 0;}
新闻热点
疑难解答