一个素数,当它的数字位置对换以后仍为素数,这样的素数称为绝对素数.编写出一个程序,求出所有的绝对素数.

来源:百度知道 编辑:UC知道 时间:2024/05/15 18:13:35
在没有调用函数之前我是这样写的:
#include "stdio.h"
#include "math.h"
main()
{int t,a,b,n,k;
for(t=10;t<100;t++)
{for(n=1;n<=(int)sqrt(t);n++)
if(t%n==0) break;
if(n>(int)sqrt(t)) {a=t%10;b=t/10;}
t=a*10+b;
for(n=1;n<=(int)sqrt(t);n++)
if(t%n==0) break;
if(n>(int)sqrt(t))
{k++;
if(k%5==0) printf("\n");}
printf("%d",t);
}
}
可结果却令人失望,请教高手帮忙找找我思路中的错误,谢谢了!
我学的是c语言^^^^

你的思路大概是这样的:

main()
{int t,a,b,n,k;

//1. t 从 [10,100) 循环
for(t=10;t<100;t++)
{
//2. 检验 t 是否素数;
for(n=1;n<=(int)sqrt(t);n++)
if(t%n==0) break;
if(n>(int)sqrt(t)) {a=t%10;b=t/10;}

//3. t 个位十位互换
t=a*10+b;

//4. 检验互换后是否素数并输出
for(n=1;n<=(int)sqrt(t);n++)
if(t%n==0) break;
if(n>(int)sqrt(t))
{k++;
if(k%5==0) printf("\n");}
printf("%d",t);
}
}

有如下几个问题:

k 使用前没有赋值

循环变量 t 再循环过程中,当 t 是素数是被改变

当 t 不是素数时,a, b 没有合理的初值,同时又被用来给 t 赋值

另外,循环其实可以限制在 [10-50)

主要的修改大概应该是,增加一个变量 x;并且把第一个判断如下修改:
if(n<=(int)sqrt(t)) continue;
a = t%10; b = t/10;
然后
x = a*10+b;
for (n=1;... 里面的 t 用 x 替换

开头增加一个 k = 0;

t=a*10+b; 我认为这部有问题,应该另外定义m=a*10+b;因为t=a*10+b后,t的值就改变了,第二次循环就不是从原来的t开始了

n循环的时候应该从2开始
fo

一个素数,当它的数字位置对换以后仍为素数,这样的素数称为绝对素数.编写出一个程序,求出所有的绝对素数. 2写一个判断素数的程序段。以InputBox接收输入的整数,当该数为素数时,输出TRUE,否则输出FALSE 求四位的可逆素数,可逆素数指:一个素数将其各位数字的顺序倒过来构成的反序数也是素数 求证一个两位数与把它的数字位置对调形成的差能被9整除 任意输入一个整数,求离它最近的素数 一个两位数,个位上的数字是十位上数字的2倍,如把十位上的数字与个人上的数字对换, 人民币与其它外币的对换值! 一个质数是两位数,它的个位上的数字与十位上的数字交换位置仍然是一个质数,这样得数有那些个? 一个数是质数,它的数字位置任意交换应为质数,这样的数为绝对质数.证明∶绝对质数不能多于三个不同数字 如果理解:当一个物体以超光速运动时 它的相对时间会变慢 即它穿越了时空