素数的定义:质数(又称素数),指在大于1的自然数中,除了1和该数自身外,无法被其他自然数整除的数(也可定义为只有1与该数本身两个正因数的数)。 大于1的自然数若不是素数,则称之为合数(也称为合成数)。
如果我们想判断一个数n是素数,则我们只需要证明当2<=i<=sqrt(n)时,任意的n%i ! = 0即可
我们通过下边的例题理解
例题如下(hdu2098):
Problem Description
把一个偶数拆成两个不同素数的和,有几种拆法呢?
Input
输入包含一些正的偶数,其值不会超过10000,个数不会超过500,若遇0,则结束。
Output
对应每个偶数,输出其拆成不同素数的个数,每个结果占一行。
Sample Input
30
26
0
Sample Output
3
2
#include <bits/stdc++.h>
using namespace std;
int pdss(int n)
{
if(n==1) return 0;
for(int i=2;i*i<=n;i++)
{
if(n%i==0) return 0;
}
return 1;
}
//通过上边的步骤判断,当满足对于任意的n%i!=0时返回值为1,即为素数;否则返回值为0,则不为素数
int main(void)
{
int n;
while(~scanf("%d",&n)&&n!=0)
{
int t=0;
for(int i=2;i<n/2;i++)
{
if(pdss(i)&&pdss(n-i)) t++;
}
printf("%d\n",t);
}
return 0;
}
如有问题,欢迎在评论区提问