偶数拆分问题
程序员文章站
2023-09-09 19:14:54
问题描述:将任意偶数拆分为两个素数之和。 tip:素数:对于任意整数n,如果除1和n外不能被其他数整除,则称n为一个素数。 解决思路: 一、素数判定:1.对于任意大于1的整数n,用n分别除以2到n-1,如果余数全不为零,则称n为一个素数 2.对于任意大于1的整数n,用n分别除以2到根号n,如果余数全 ......
问题描述:将任意偶数拆分为两个素数之和。
tip:素数:对于任意整数n,如果除1和n外不能被其他数整除,则称n为一个素数。
解决思路:
一、素数判定:1.对于任意大于1的整数n,用n分别除以2到n-1,如果余数全不为零,则称n为一个素数
2.对于任意大于1的整数n,用n分别除以2到根号n,如果余数全不为零,则称n为一个素数
二、设输入的偶数为n,n=a+b 用上述方法判定a、b是否为素数即可。
代码如下:
已在vs2010中编译完成。
#include<stdio.h> #include<stdlib.h> #include<math.h> void main() { int a,d,flag=0; float b,c; loop: { printf("请输入一个偶数:\n"); scanf("%d",&a); } if(a%2!=0) goto loop; for(b=2;b<=a/2;b++) { for(d=2;d<=sqrt(b);d++) if((int)b%d==0) break; if (d>sqrt(b)) c=a-b; else continue; for(d=2;d<=sqrt(c);d++) if((int)c%d==0) break; if (d>sqrt(c)) { printf("%d = %d + %d\n",a,(int)b,(int)c); flag=1; } else continue; } if((int)flag==0) printf("不能拆分\n"); system("pause"); }