编程找出100~999之间所有既是回文数又是质数的数

2024-11-18 12:44:47
推荐回答(5个)
回答(1):

#include 
#include 
 
int p(int x)  //x是素数返回1,否则返回0
{
 int i;
 for(i=2;i<=sqrt(x);i++)
  if (x%i==0) return 0;
 return 1;
}
int h(int x)//x是回文,返回1,否则返回0
{
 int y=x,i=0;
 int a,b;
 while (y>0) y=y/10,i++; //求x的位数
 y=x;
 while (y)
 {
  a=y/pow(10,i-1);
  b=y%10;
  y=y-a*pow(10,i-1);
  y=y/10;
  if (a!=b) return 0;
  i=i-2;
 }
 return 1;
}

void main()
{
 int i;
 for(i=100;i<10000;i++)
  if(p(i) && h(i))
   printf("%d,",i);
}

回答(2):

#include
#include

int p(int x) //x是素数返回1,否则返回0
{
int i;
for(i=2;i<=sqrt(x);i++)
if (x%i==0) return 0;
return 1;
}
int h(int x)//x是回文,返回1,否则返回0
{
int y=x,i=0;
int a,b;
while (y>0) y=y/10,i++; //求x的位数
y=x;
while (y)
{
a=y/pow(10,i-1);
b=y%10;
y=y-a*pow(10,i-1);
y=y/10;
if (a!=b) return 0;
i=i-2;
}
return 1;
}
void main()
{
int i;
for(i=100;i<10000;i++)
if(p(i) && h(i))
printf("%d,",i);
}

回答(3):

B:for(int i=100;i<=999;i++){
String s=i+"";//将数字转化成字符串
String s1=s.substring(0, 1);//取其百位数字
String s2=s.substring(2, 3);//取其个位数字
if(s1.equals(s2)){//判断百位数字是否等于各位数字
for(int j=2;jif(i%j==0){
continue B;//能整除就不是质数,返回继续循环
}
}
System.out.println(i+" ");//打印出质数

回答(4):

B:for(int i=100;i<=999;i++){
String s=i+"";//将数字转化成字符串
String s1=s.substring(0, 1);//取其百位数字
String s2=s.substring(2, 3);//取其个位数字
if(s1.equals(s2)){//判断百位数字是否等于各位数字
for(int j=2;jif(i%j==0){
continue B;//能整除就不是质数,返回继续循环
}
}
System.out.println(i+" ");//打印出质数
}
}

不知道你要求用什么语言编程,以上使用java编的,就算你用C的话 以上也有借鉴 呵呵

回答(5):

101是的