分拆素数和
Posted ping2yingshi
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了分拆素数和相关的知识,希望对你有一定的参考价值。
此博客链接: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 ", count); } return 0; }
以上是关于分拆素数和的主要内容,如果未能解决你的问题,请参考以下文章