其他分享
首页 > 其他分享> > 分拆素数和

分拆素数和

作者:互联网

此博客链接:https://www.cnblogs.com/ping2yingshi/p/12384918.html

分拆素数和(28min)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2098

Problem Description 把一个偶数拆成两个不同素数的和,有几种拆法呢?   Input 输入包含一些正的偶数,其值不会超过10000,个数不会超过500,若遇0,则结束。   Output 对应每个偶数,输出其拆成不同素数的个数,每个结果占一行。   Sample Input 30 26 0   Sample Output 3 2 题解:        方法:判断素数        思路:对于给定的数,分拆两个数后,分别对这两个数判断是不是素数,同时是素数时,个数才加一。        注意:在素数判断函数中,循环从2到判断的数开根号这里,注意要小于等于开根号的数。        耗时原因:一开始没有看到时分成两个数,还以为好多数,这把我难的。 代码如下:  
#include<stdio.h>
#include<math.h>
#include<stdlib.h>
#include<string.h>
int   IsPrim(int x)
{
    int i;
    int flag = 1;
    for (i = 2; i <= sqrt(x); i++)
    {
        if (x % i == 0)//判断是不是素数
            flag = 0;
    }
    return flag;
}
int main()
{
    int n;
    while (~scanf_s("%d",&n))
    { 
        if (n == 0)
            break;
        int a;
        int b;
        int count=0;//计算满足条件数量
        for (a = 2; a < n / 2; a++)
        {
            b = n - a;
            if (IsPrim(a) && IsPrim(b))
            {
               count++;
        
            }
               
        }
        
        printf("%d\n", count);
     
    }
    return 0;
}

 

标签:int,偶数,素数,分拆,include,根号
来源: https://www.cnblogs.com/ping2yingshi/p/12384918.html