C++ 验证哥德巴赫猜想
程序填空,不要改变与输入输出有关的语句。验证哥德巴赫猜想:任何一个大于6的偶数均可表示为两个素数之和。例如6=3+3,8=3+5,…,18=7+11。输入两个正整数m和n...
程序填空,不要改变与输入输出有关的语句。
验证哥德巴赫猜想:任何一个大于6的偶数均可表示为两个素数之和。例如6=3+3,8=3+5,…,18=7+11。
输入两个正整数 m 和 n(6<=m, n<=100),将 m 到 n 之间的偶数表示成两个素数之和,打印时一行打印5组。
输出使用语句:printf("%d=%d+%d ", number, i, number - i); 展开
验证哥德巴赫猜想:任何一个大于6的偶数均可表示为两个素数之和。例如6=3+3,8=3+5,…,18=7+11。
输入两个正整数 m 和 n(6<=m, n<=100),将 m 到 n 之间的偶数表示成两个素数之和,打印时一行打印5组。
输出使用语句:printf("%d=%d+%d ", number, i, number - i); 展开
3个回答
展开全部
#include<stdio.h>
#include<math.h>
//判断一个数是否是素数
bool isPrime(int n)
{
int i;
for(i=2;i<=sqrt(n);++i){
if(n%i==0) return false;
}
if(i>sqrt(n)) return true;
}
//判断这个数是否符合哥德巴赫猜想
bool isNum(int num)
{
int i;
static int count=0;//定义一个静态变量count记录打印的次数,此时count相当于全局变量
for(i=1;i<=num/2;++i){
if(isPrime(i)){//先判断i是否为素数,若是则执行
if(isPrime(num-i)){//判断num-1是否为素数,若是则输出,否则继续循环
printf("%d=%d+%d\t",num,i,num-i);
++count;
if(count%5==0) printf("\n");//如果count=5就回车
return true;
}//inner if
}//out if
}//for
return false;//如果i>num/2,则返回假
}
void main()
{
int i,m,n;
printf("Input m(m>=6) and n(n<=100):");
scanf("%d%d",&m,&n);
for(i=m;i<=n;++i){
//判断该数是否是偶数
if(i%2==0) isNum(i);
}
}
刚写好的!运行了几次输出都符合要求!你自己试试
这下满意了吧!加点分哦!
#include<math.h>
//判断一个数是否是素数
bool isPrime(int n)
{
int i;
for(i=2;i<=sqrt(n);++i){
if(n%i==0) return false;
}
if(i>sqrt(n)) return true;
}
//判断这个数是否符合哥德巴赫猜想
bool isNum(int num)
{
int i;
static int count=0;//定义一个静态变量count记录打印的次数,此时count相当于全局变量
for(i=1;i<=num/2;++i){
if(isPrime(i)){//先判断i是否为素数,若是则执行
if(isPrime(num-i)){//判断num-1是否为素数,若是则输出,否则继续循环
printf("%d=%d+%d\t",num,i,num-i);
++count;
if(count%5==0) printf("\n");//如果count=5就回车
return true;
}//inner if
}//out if
}//for
return false;//如果i>num/2,则返回假
}
void main()
{
int i,m,n;
printf("Input m(m>=6) and n(n<=100):");
scanf("%d%d",&m,&n);
for(i=m;i<=n;++i){
//判断该数是否是偶数
if(i%2==0) isNum(i);
}
}
刚写好的!运行了几次输出都符合要求!你自己试试
这下满意了吧!加点分哦!
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询