蓝桥杯:求一个5位数的最大循环素数

来源:互联网 发布:python机器人编程 ros 编辑:程序博客网 时间:2024/05/20 16:12

1193是个素数,对它循环移位后发现:1931,9311,3119也都是素数,这样特征的数叫:循环素数。

你能找出具有这样特征的5位数的循环素数吗?当然,这样的数字可能有很多,请写出其中最大的一个。

注意:答案是个5位数,不要填写任何多余的内容。

#include<stdio.h>#include<math.h>//判断是否是素数int isPrime(int n){int flag=1;for(int i=2;i<=sqrt(n);i++){if(n%i==0){flag=0;break;}}return flag;}//数字循环int fun(int n){int a = n%10;//取出最后一位  比如12345得出a=5 int b = n/10;//取出前面4位                b=1234return a*10000+b; //经典的循环返回, 5*10000+1234=51234} int main(){int i,j;//i代表需要求的数字,从99999到10000,j代表数字需要循环5次 int count;int temp; for(i=99999;i>=10000;i--)//在所有的5位数中从最大开始找起 {temp = i;count = 0;//切记要在这里把count的值赋为0,千万别在外面赋值,因为每次求一个数字i它的count值都要变为0不然的花就会求得99971是结果 for(j=0;j<5;j++)//因为5位数的话就要循环5次 {if(isPrime(temp)){//printf("%d\t",temp);//错误,因为有些素数循环2、3次后就不是素数了,就不应该输出,O(∩_∩)O count++;temp=fun(temp);//调用fun函数,实现循环的判断是否还是素数 }}if(count==5)//如果循环5次那可以确定5次都是素数了 {printf("\n%d\n",i);break;//找到了就跳出循环,结束 }}return 0;}



2 0