编写程序求出100到999之间的无暇素数.

无暇素数是指本身为素数,其逆序数也是素数,要求编写两个函数,分别用来求逆序数和判定素数.

所谓无暇素数是指本身为素数,且其逆序数也是素数的数。

例如:

//参考代码如下:
#include<stdio.h>
#include<math.h>
int main ( )
{
 int n,a,b,c,k,d,i,flag;
 for(n=100;n<=900;n++)//从100-900依次判断是否是无暇素数 
 {
  flag=1;
  k=(int)sqrt(n);
  for(i=2;i<=k;i++)//先判断n是否为素数 
  {
   if(n%i==0)
   flag=0;
   }
   if(flag)//如果n为素数,计算n的逆序数 
   {
    a=n%10;
    b=n/10%10;
    c=n/100;
    d=a*100+b*10+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;
}
/*运行结果
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 
*/
温馨提示:内容为网友见解,仅供参考
第1个回答  2015-04-03

程序代码(函数f1判断素数,f2转换逆数):

#include<stdio.h>
int f1(int x){
  int i;
  for (i=2;i<x;i++) if (x%i==0) return 0;
  return 1;
}
int f2(int x){
  int y=0;
  while(x){
    y=y*10 + x%10;
    x=x/10;
  }
  return y;
}
main(){
  int i;
  printf("\n");
  for (i=100;i<=999;i++)
    if (f1(i) && f1(f2(i)))
      printf("%d\t",i);
}

 

 

输出结果:

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     907     919     929     937     941     953     967
971     983     991

本回答被网友采纳

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

找出100-999之间德望无暇素数
for (i=100;i<=999;i++){ int temp1=i%10;int temp2=(i)\/10%10;int temp3=i\/100;int temp4=temp1*100+temp2*10+temp3;if (fun(i)&&fun(temp4)){ count++;printf("%d ",i);if(count%9==0)printf("\\n");} } printf("\\n");return 0;} ...

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 ...

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

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

vb编程 找出100-900之间的无暇素数。所谓无暇素数是指本身为素数,且其...
If c = 0 Then y = a \\ 100 + ((a \\ 10) Mod 10) * 10 + (a Mod 10) * 100 For b = 2 To y - 1 If y Mod b = 0 Then d = 1 End If Next b If d = 0 Then Print "无暇素数为:" & a & " 倒序数为:" & y End If End...

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...

求100到900之内的无暇素数代码哪里错了总是不知道
return 0;}这个是能够正确计算出来无暇素数的代码,你自己对比一下吧。3位数字的无暇素数是指数字本身是一个素数,它的个位和百位颠倒之后还是一个素数的数字。仔细看了下你的代码,素数判断应该从2到平方根,你的代码里用的是1到平方根,素数的定义是除了1和自己以外没有别的数可以整除,1和自己都...

...建立function函数来判断100-900之间的无暇素数,谢谢!
ss As Integer, i As Integer s = CStr(n) For i = Len(s) To 1 Step -1 ss = ss & Mid(s, i, 1) Next ex = Val(ss)End FunctionSub Main() Dim i As Integer For i = 100 To 999 If ss(i) And ss(ex(i)) Then Debug.Print i NextEnd...

C语言,求100到900内的无暇素数,答案是错的,不知道程序错哪了?
几个建议,避免使用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;其他没问题

相似回答