|
/*这个程序在VC里通过,但是用GCC 就通不过,为什么呢?*/
#include<stdio.h>
#include<math.h>
int sushu(int m)//判断M是否为素数,只有当M为素数时才返回M
{ int t=0;
for(int i=2;i<=sqrt(m/2);i++)
if(m%i==0)
{
t=1;
break;
}//不是素数,跳出FOR循环
if(t==1)
return 0; //若不为素数,返回0
return m;
}//若为素数,返回这个数
int nisushu(int m)//求素数M的逆??如123456变为165432
{
int n=m%100000;//N为后5位
int sum=0,t=10000;
for(int i=1;i<6;i++)//将N求逆:如23456-》65432
{
sum=sum+n%10*t;
n=n/10;
t=t/10;
}
sum=sum+(m/100000)*100000;//求得165432
return sum;
}
main()
{
int i;
int n,m;
m=100001;
while(m<=999999)//M为六位数
{
i=1;
n=m;
while(1)//如果M和M的逆都为素数;
{
if(sushu(m)!=m||sushu(nisushu(m))!=nisushu(m))
break;
m=m%100000*10+m/100000;
i++;
}//123456->234561
if(i==7)
printf("这个数为:%d\n",n);
m+=2;
}//当I为7时,说明这六次循环sushu(m)==m&&sushu(nisushu(m))==nisushu(m)都为真
} |
|