每个不小于6的偶数都能表示为2个素数之和,请在6-100,000之间的数值,用任意一种语言实现,一个
偶数有多种表示形式,输出一种即可
#include
#include
using namespace std;
void Judge(int num);
bool Show(int m,int n);
int main()
{
int num;
while(1)
{
printf("please input the number:\n");
cin>>num;
//scanf("num=%d",&num); //用scanf输入,程序死循环不知道为什么
if(num<6||num>100000)
{
printf("wrong nnmber,input again!\n");
}
else
break;
}
Judge(num);
return 0;
}
void Judge(int num) //判定函数
{
int i,j;
bool Juflag=true;
for(int i=6;i {
for(j=1;j {
Juflag=Show(j,i-j); //对2个加数进行判断
if(!Juflag) // 如果找到2个素数则循环退出
break;
}
}
}
bool Show(int m,int n) //进一步判定和输出函数
{
int t,k;
bool flag=true;
bool shflag=true;
for(t=2;t {
if(m%t==0)
{
flag=false;
break;
}
}
if(flag) //如果上一个数是素数 继续判断下一个
{
for(k=2;k {
if(n%k==0)
{
shflag=false;
break;
}
}
if(shflag) //如果2个都是素数,则显示并且设置循环标志
{
printf("一个素数=%d\t,另一个=%d\n",m,n);
return false;
}
}
return true;
}
有更简单的方法吗,请路过的高手指教
阅读(991) | 评论(0) | 转发(0) |