C++帮我看一下 哪儿出问题啦?帮我改改,谢谢一个素数(设为p)依次从最高位去掉一位,二位,三位,……,若得到的各数仍都是素数(注:1不是素数),且数p的各位数字均不为零,则称该数p为逆向超
来源:学生作业帮助网 编辑:作业帮 时间:2024/11/16 12:05:12
C++帮我看一下 哪儿出问题啦?帮我改改,谢谢一个素数(设为p)依次从最高位去掉一位,二位,三位,……,若得到的各数仍都是素数(注:1不是素数),且数p的各位数字均不为零,则称该数p为逆向超
C++帮我看一下 哪儿出问题啦?帮我改改,谢谢
一个素数(设为p)依次从最高位去掉一位,二位,三位,……,若得到的各数仍都是素数(注:1不是素数),且数p的各位数字均不为零,则称该数p为逆向超级素数.例如,617,17,7都是素数,因此617是逆向超级素数,但尽管503,03,3都是素数,但它不是逆向超级素数,因为它包含有零.试求[100,999]之间的所有逆向超级素数从小到大数的素数个数是多少?,并输出这些逆向超级素数?
#include
#include
main()
{ int i,n=0,j,a,b,c,d;
{ for(i=100;i
C++帮我看一下 哪儿出问题啦?帮我改改,谢谢一个素数(设为p)依次从最高位去掉一位,二位,三位,……,若得到的各数仍都是素数(注:1不是素数),且数p的各位数字均不为零,则称该数p为逆向超
#include<stdio.h>
#include<math.h>
main()
{
int i,n=0,j,a,b,c,d;
for(i=100;i<=999;i++)
{
for(j=2;j<=sqrt(i);j++)
if(i%j==0) break;
if(j>sqrt(i))
{
a=i%100;
b=i/10%10;
c=i%10;
if(b!=0) // <---加一个判断,把十位含0的数去掉
{
d=b*10+c;
for(j=2;j<=sqrt(d);j++) // <--sqrt(i)改成sqrt(d)
if(d%j==0) break;
if(j>sqrt(d)) // <--d>sqrt(i) 改成j>sqrt(d)
{
for(j=2;j<=sqrt(c);j++) // <--sqrt(i)改成sqrt(c)
if(c%j==0) break;
if(j>sqrt(c)) // <-- c>sqrt(i)改成j>sqrt(c)
{
n++;
printf("%d\n",i);
}
}
}
}
}
printf("%d\n",n);
}