偶数拆分问题
程序员文章站
2022-06-12 17:20:01
问题描述:将任意偶数拆分为两个素数之和。 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"); }
推荐阅读
-
php smarty truncate UTF8乱码问题解决办法
-
.Net与JS时间日期格式的转换问题对比分析
-
Ubuntu下MySQL中文乱码的问题解决
-
.Net获取URL中文参数值的乱码问题解决方法总结
-
基于Android SDK-在64位Linux中使用需要注意的问题
-
解决电脑光驱出仓时里面有响声但托盘伸不出来的问题
-
深入Android线程的相关问题解惑
-
Android开发笔记之:深入理解Cursor相关的性能问题
-
深入android中The connection to adb is down的问题以及解决方法
-
Android编程中TextView宽度过大导致Drawable无法居中问题解决方法