c语言编程——求100-900间的无暇素数,我写的程序哪里出问题了?求大神指教!在线等!

代码如下,最后输出结果为101907,想知道为何只输出了两个数,而且最后一个还是907大于九百呢?程序错在哪了呢???#include<stdio.h>#include<... 代码如下,最后输出结果为101 907,想知道为何只输出了两个数,而且最后一个还是907大于九百呢?程序错在哪了呢???
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
void main()
{
int n,i,k,a,b,c;
for(n=101;n<900;n++)
{
k=(int)sqrt(float(n));
for(i=2;i<=k;i++)

if(n%i==0) break;
if(i==k+1)
{ a=n/100;
b=n/10%10;
c=n%10;
n=c*100+b*10+a;
k=(int)sqrt(float(n));
for(i=2;i<=k;i++)
if(n%i==0) break;
if(i==k+1)
printf("%d\n",n);
}
}
system("pause");
}
展开
 我来答
LaMole007
推荐于2018-05-08 · 超过12用户采纳过TA的回答
知道答主
回答量:33
采纳率:63%
帮助的人:13.5万
展开全部
首先,是没分清break和continue的区别。这个是只输出两个数的原因。
然后,是输出的n不是原来的数,题主对n做了取逆序数,输出的是逆序数。这个是出现大于900的原因。
最后,题主本身的对遍历条件n做了操作,导致循环本身也有问题。建议题主,先理清逻辑,重写下。
追问
嗯确实,刚老师讲课时反应过来。我的循环逻辑没错,错在对n取逆序时,为了省事还用了变量n,换一变量表示再判断逆序是否为素数就好了!问题已解决,多谢!
wq19880630
2018-05-08 · 超过31用户采纳过TA的回答
知道答主
回答量:119
采纳率:27%
帮助的人:25万
展开全部
根据无暇素数的概念: 一个两位整数 A 本身是素数,若将其个位数字与十位数字交换,得到一个新的两位数 B, 而 B 也是素数,我们则称 A 为无暇素数。
追问
老哥,你这答非所问啊!
老哥,你这答非所问啊!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式