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

编程找出100~999之间所有既是回文数又是质数的数。回文数是指一个数正方向念和反方向念都是同一个数的数,如101就是这样的数。
要求:
1)在主函数中调用一个判断回文数的函数,在判断回文数的函数中又调用一个判断质数的函数。
2)在判断质数的函数中,将找出的回文质数按每行10个数输出。

#include <stdio.h>
#include <math.h>
 
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);
}

温馨提示:答案为网友推荐,仅供参考
第1个回答  2019-08-16
#include <stdio.h>
#include <math.h>

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个回答  2009-06-04
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;j<i;j++){//一下判断是否质数
if(i%j==0){
continue B;//能整除就不是质数,返回继续循环
}
}
System.out.println(i+" ");//打印出质数
第3个回答  2009-05-27
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;j<i;j++){//一下判断是否质数
if(i%j==0){
continue B;//能整除就不是质数,返回继续循环
}
}
System.out.println(i+" ");//打印出质数
}
}

不知道你要求用什么语言编程,以上使用java编的,就算你用C的话 以上也有借鉴 呵呵本回答被网友采纳
第4个回答  2009-06-03
101是的
相似回答