C语言,求100到900内的无暇素数,答案是错的,不知道程序错哪了?

#include<stdio.h>
#include<math.h>
int main(){
int n,a,b,c,d,k,i,flag;
for(n=100;n<=900;n++){
flag=1;
k=(int)sqrt(n);
for(i=2;i<=k;i++)
{if(n%i==0) flag=0; }
if(flag){
a=n%10;
c=n/100;
b=n/10%10;
d=100*a+10*d+c;
k=(int)sqrt(d);
for(i=2;i<=k;i++){
if(d%i==0) flag=0;
}
if(flag) printf("%d ",n);
}
}
printf("\n");
return 0;
}

第1个回答  2020-11-22
几个建议,避免使用k<=(int)sqrt(i)这种判断,应该用 k*k <=i,因为前者有截断误差
b=n/10%10;要写成b=(n/10)%10;前者不一定错,但是你需要记住两个运算符计算顺序
d=100*a+10*d+c;应该是d=100*a+10*b+c;

其他没问题本回答被网友采纳
第2个回答  2020-11-22
d=100*a+10*d+c; 这里写错了,应该是d=100*a+10*b+c;

C语言,求100到900内的无暇素数,答案是错的,不知道程序错哪了?
d=100*a+10*d+c;应该是d=100*a+10*b+c;其他没问题

求100到900之内的无暇素数代码哪里错了总是不知道
d, i, flag;for (n = 100; n <= 900; n++) {flag = 1; \/\/ 假设当前数字是无暇素数k = (int) sqrt(n); \/\/ 当前数字的平方根for (i = 2; i <= k; i++) {if (n % i == 0) \/\/ 如果从2到平方根有数字可以被整除,则...

c语言编程——求100-900间的无暇素数,我写的程序哪里出问题了?求大神指...
首先,是没分清break和continue的区别。这个是只输出两个数的原因。然后,是输出的n不是原来的数,题主对n做了取逆序数,输出的是逆序数。这个是出现大于900的原因。最后,题主本身的对遍历条件n做了操作,导致循环本身也有问题。建议题主,先理清逻辑,重写下。

请问100~900之间的无暇素数的C语言编程。谢谢大神
i,flag; for(n=100;n<=900;n++) { flag=1; k=(int)sqrt(n); for(i=2;i<=k;i++) { if(n%i==0) flag=0; } if(flag) { a=n%10; b=n\/10%10; c=n\/100; d

求助,vb编程题。设计一个程序,找出100~900之间的无暇素数
Option ExplicitPrivate Sub Command1_Click() Dim i As Integer, ImmaculacyPrimeNumber As Integer Dim InversionNumber, Counter As Integer For i = 100 To 900 ImmaculacyPrimeNumber = 100 * (i Mod 10) + 10 * (i \\ 10 Mod 10) + i \\ 100 If IsPrimeNumber(i) And IsP...

编写程序求出100到999之间的无暇素数.
回答:从2开始的根数有很好的了解,n是因为,如果该数不是素数,因此它可以被分解成数小于n乘以数的平方根是大于n的平方根也就是说,如果没有超过的数目n的平方根少整除,以使相应的数字是肯定比n的平方根,因此不存在在根号2之间,以n个数不能分割更大那么,数n的数n根之间当然可以不存在整除所以,你只...

vb编程 找出100-900之间的无暇素数。所谓无暇素数是指本身为素数,且其...
Private Sub Command2_Click() For i = 100 To 999 If IsPrime(i) And IsPrime(GetF(i)) Then Print i Next iEnd SubPrivate Function IsPrime(ByVal n As Integer) As Boolean Dim pb As Integer pb = n - 1 IsPrime = True For i = 2 To pb If n Mod ...

请问如何建立function函数来判断100-900之间的无暇素数,谢谢...
Function ss(n As Integer) As Boolean Dim i As Integer For i = 2 To Sqr(n) If n Mod i = 0 Then ss = False Exit Function End If Next ss = TrueEnd FunctionFunction ex(n As Integer) As Integer Dim s As String, ss As Integer, i As Integer...

100到900的无暇素数有哪些
100到900之间的无暇素数有101、107、113、131、149、151、157、167、179、181、191、199、311、313、337、347、353、359、373、383、389、701、709、727、733、739、743、751、757、761、769、787、797。无暇素数,一个两位整数A本身是素数,若将其个位数字与十位数字交换,得到一个新的两位数B,...

C++程序求无暇素数
include<stdio.h>#include<stdlib.h>void main(){ int a,b,c,i,j,k,sum,l,p,col=1; for(i=100;i<=999;i++) { k=1; for(j=2;j<i;j++) if(i%j==0) k=0; if(k)\/\/注意比较自己的程序,逻辑有点问题 { a=i\/100; b=(i-100*a)\/10; c=i...

相似回答