首页 > 学院 > 开发设计 > 正文

HDU2098 分拆素数和

2019-11-06 07:42:42
字体:
来源:转载
供稿:网友

分拆素数和

                                                   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 Output
32 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;}
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表