素数
知识点:判断一个数n是素数的方法就是如果从2到sqtr(n)之间没有一个数能整除n,那么n就是素数。
例题:http://acm.hdu.edu.cn/showproblem.php?pid=1262
分析:首先输入一个数n然后从n/2(m)开始往下判断是否是素数,如果是则进一步判断n-m是否是素数,如果都是则输出并跳出循环。
题解代码:
1 #include <stdio.h> 2 #include <math.h> 3 int isnotprime(int n); 4 int main() 5 { 6 int k,m; 7 while(scanf("%d",&k)!=EOF)//判定结束条件 8 { 9 for(m=k/2;m>=3;m-=1)//从这里开始判断是为了简化运算,使一开始的得到的素数对就是最接近的两个数 10 if(isnotprime(m)==0) 11 if(isnotprime(k-m)==0) 12 { 13 printf("%d %d\n",m,k-m); 14 break; 15 } 16 } 17 return 0; 18 } 19 int isnotprime(int n)//试除法判断是否为素数 20 { 21 int i; 22 int endd=sqrt(n); 23 if(n%2==0 || n<3) 24 return 1; 25 for(i=3;i<=endd;i+=2) 26 { 27 if(n%i==0) 28 break; 29 } 30 return i>endd?0:1; 31 }