第六届蓝桥杯校内选拔赛C/C++高职组解题(4)

1193是个素数,对它循环移位后发现:

1931,9311,3119也都是素数,这样特征的数叫:循环素数。

你能找出具有这样特征的5位数的循环素数吗?

当然,这样的数字可能有很多,请写出其中最大的一个。

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

答案

99371

代码

#include <iostream>
#include <cmath>
#include <string>
#include <windows.h>
#include <stack>
#include <vector>
#include <iomanip> 
#include <stack> 
#include <set>
#include <map>
#include <cstdio>
using namespace std;
bool isprime(int n)
{
	bool ret =true;
	for(int i=2;i<=sqrt(n);i++)
	{
		if(n%i==0)
		{
			ret=false;
			break;
		}
	}
	return ret;
}
int getnextfor5(int n)
{
	int a=n%10;//取出最后一位;
	int b=n/10;//取出前面四位
	return a*10000+b;
	 
}
int main()
{
	int i=99999;
	bool k;
	while(true)
	{
		k=true;
		int next=i;
		for(int i=0;i<5;i++)
		{
			if(next>9999 && isprime(next))
			{
				next=getnextfor5(next);
			}
			else
			{
				k=false;
				true;
			}
		}
		if(k==true)
		{
			cout<<i<<endl;
			break;
		}
		i--;
	}
	return 0;
}

点赞