分拆素数和
作者:互联网
此博客链接: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