c语言程序问题 一个偶数总能表示成两个素数之和
intmain(){inta,b,c,d;scanf("%d",&a);for(b=3;b<=a/2;b+=2){for(c=2;c<=sqrtl(b);c++)if(b...
int main()
{
int a,b,c,d;
scanf("%d",&a);
for(b=3;b<=a/2;b+=2)
{
for(c=2;c<=sqrtl(b);c++)
if(b%c==0) break;
if(c>sqrtl(b))
d=a-b;
else
break;
for(c=2;c<=sqrtl(d);c++)
if(d%c==0) break;
if(c>sqrtl(d))
printf("%d=%d+%d\n",a,b,d);
}
} 有点看不懂 可否给加点注释 展开
{
int a,b,c,d;
scanf("%d",&a);
for(b=3;b<=a/2;b+=2)
{
for(c=2;c<=sqrtl(b);c++)
if(b%c==0) break;
if(c>sqrtl(b))
d=a-b;
else
break;
for(c=2;c<=sqrtl(d);c++)
if(d%c==0) break;
if(c>sqrtl(d))
printf("%d=%d+%d\n",a,b,d);
}
} 有点看不懂 可否给加点注释 展开
3个回答
展开全部
int main()
{
int a,b,c,d;
scanf("%d",&a);
for(b=3;b<=a/2;b+=2) //先寻找一个素数b
{
for(c=2;c<=sqrtl(b);c++)
if(b%c==0) break; //b不是一个素数
if(c>sqrtl(b)) //b是素数
d=a-b;
else
break;
for(c=2;c<=sqrtl(d);c++)
if(d%c==0) break; //差值d不是一个素数
if(c>sqrtl(d)) //加入差值d也是一个素数,找到,打印
printf("%d=%d+%d\n",a,b,d);
}
}
展开全部
int main()
{
int a,b,c,d;
scanf("%d",&a);
for(b=3;b<=a/2;b+=2) //先寻找一个素数b
{
for(c=2;c<=sqrtl(b);c++)
if(b%c==0) break; //b不是一个素数
if(c>sqrtl(b)) //b是素数
d=a-b;
else
break;
for(c=2;c<=sqrtl(d);c++)
if(d%c==0) break; //差值d不是一个素数
if(c>sqrtl(d)) //加入差值d也是一个素数,找到,打印
printf("%d=%d+%d\n",a,b,d);
}
}
{
int a,b,c,d;
scanf("%d",&a);
for(b=3;b<=a/2;b+=2) //先寻找一个素数b
{
for(c=2;c<=sqrtl(b);c++)
if(b%c==0) break; //b不是一个素数
if(c>sqrtl(b)) //b是素数
d=a-b;
else
break;
for(c=2;c<=sqrtl(d);c++)
if(d%c==0) break; //差值d不是一个素数
if(c>sqrtl(d)) //加入差值d也是一个素数,找到,打印
printf("%d=%d+%d\n",a,b,d);
}
}
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
数学证明不是靠程序去枚举,遍历,没有数学定理的推导过程,有限的数据遍历显得苍白无力 ,所以写这种代码是没有意义的
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询