蓝桥杯:求一个5位数的最大循环素数和 回文素数
2017-04-04 22:07
239 查看
1193是个素数,对它循环移位后发现:1931,9311,3119也都是素数,这样特征的数叫:循环素数。
你能找出具有这样特征的5位数的循环素数吗?当然,这样的数字可能有很多,请写出其中最大的一个。
#include<stdio.h>
#include<math.h>
int isshushu(int n)
{
int flag=1;
for(int i=2;i<=sqrt(n);i++)
{
if(n%i==0)
flag=0;
}
return flag;
}
int yiwei(int n)
{
int a=n%10;
int b=n/10;
return a*10000+b;
}
main()
//思路:对每个i做5次素数和移位判断
{
for(long i=10000;i<=99999;i++)
{
int temp=i;
int cnt=0;
for(int j=1;j<=5;j++)
{
if(isshushu(temp)) //判断是不是素数
{
cnt++;
temp=yiwei(temp);//移动位置,还有种算法可以颠倒1234-4321 t=t*10+num%10;
}
}
if(cnt==5)
{
printf("%d\n",i);
}
}
return 0;
}
答案:99371
回文数:
10301是个5位的素数。它有个特点,把数字倒过来还是它本身,具有这样特征的素数,我们称之为:回文素数。
10501
10601
11311
这些都是5位的回文素数。
请你计算一下,像这样的5位数的回文素数,一共有多少个?
请填写这个表示个数的整数,注意不要写任何其它多余的内容,比如说明或解释文字,也不要列出所有的回文素数。
#include<stdio.h>
#include<math.h>
int isshushu(int n)
{
int flag=1;
for(int i=2;i<=sqrt(n);i++)
{
if(n%i==0)
flag=0;
}
return flag;
}
int huiwen(int n)
{
int t=0;
while(n!=0)
{
t=t*10+n%10;//12534->43521
n=n/10;
}
return t;
}
main()
{
int cnt=0;
for(long i=10000;i<=99999;i++)
{
int temp=i;
if(isshushu(temp))
{
int temp1=huiwen(temp);
if(temp1==temp)
{
cnt++;
printf("%d\n",temp1);
}
}
}
printf("%d",cnt);
return 0;
}
方法二:
#include<stdio.h>
#include<math.h>
int isshushu(int n)
{
int flag=1;
for(int i=2;i<=sqrt(n);i++)
{
if(n%i==0)
flag=0;
}
return flag;
}
main()
{
int cnt=0;
for(int a=0;a<=9;a++)
{
for(int b=0;b<=9;b++)
{
for(int c=0;c<=9;c++)
{
int num=a*10000+b*1000+c*100+b*10+a;
if(isshushu(num)&&num!=0)
{
printf("%d\n",num);
cnt++;
}
}
}
}
printf("%d",cnt);
return 0;
}
方法三:
五重循环;如果第一位和最后一位,第二位和倒数第二位相等,再判断是不是素数
答案:93
你能找出具有这样特征的5位数的循环素数吗?当然,这样的数字可能有很多,请写出其中最大的一个。
#include<stdio.h>
#include<math.h>
int isshushu(int n)
{
int flag=1;
for(int i=2;i<=sqrt(n);i++)
{
if(n%i==0)
flag=0;
}
return flag;
}
int yiwei(int n)
{
int a=n%10;
int b=n/10;
return a*10000+b;
}
main()
//思路:对每个i做5次素数和移位判断
{
for(long i=10000;i<=99999;i++)
{
int temp=i;
int cnt=0;
for(int j=1;j<=5;j++)
{
if(isshushu(temp)) //判断是不是素数
{
cnt++;
temp=yiwei(temp);//移动位置,还有种算法可以颠倒1234-4321 t=t*10+num%10;
}
}
if(cnt==5)
{
printf("%d\n",i);
}
}
return 0;
}
答案:99371
回文数:
10301是个5位的素数。它有个特点,把数字倒过来还是它本身,具有这样特征的素数,我们称之为:回文素数。
10501
10601
11311
这些都是5位的回文素数。
请你计算一下,像这样的5位数的回文素数,一共有多少个?
请填写这个表示个数的整数,注意不要写任何其它多余的内容,比如说明或解释文字,也不要列出所有的回文素数。
#include<stdio.h>
#include<math.h>
int isshushu(int n)
{
int flag=1;
for(int i=2;i<=sqrt(n);i++)
{
if(n%i==0)
flag=0;
}
return flag;
}
int huiwen(int n)
{
int t=0;
while(n!=0)
{
t=t*10+n%10;//12534->43521
n=n/10;
}
return t;
}
main()
{
int cnt=0;
for(long i=10000;i<=99999;i++)
{
int temp=i;
if(isshushu(temp))
{
int temp1=huiwen(temp);
if(temp1==temp)
{
cnt++;
printf("%d\n",temp1);
}
}
}
printf("%d",cnt);
return 0;
}
方法二:
#include<stdio.h>
#include<math.h>
int isshushu(int n)
{
int flag=1;
for(int i=2;i<=sqrt(n);i++)
{
if(n%i==0)
flag=0;
}
return flag;
}
main()
{
int cnt=0;
for(int a=0;a<=9;a++)
{
for(int b=0;b<=9;b++)
{
for(int c=0;c<=9;c++)
{
int num=a*10000+b*1000+c*100+b*10+a;
if(isshushu(num)&&num!=0)
{
printf("%d\n",num);
cnt++;
}
}
}
}
printf("%d",cnt);
return 0;
}
方法三:
五重循环;如果第一位和最后一位,第二位和倒数第二位相等,再判断是不是素数
答案:93
相关文章推荐
- 蓝桥杯:求一个5位数的最大循环素数
- 蓝桥杯:求一个5位数的最大循环素数
- 循环·4·小于m的最大的10个素数
- 面试题12:打印1到最大的n位数-大数问题-递归实现多层循环
- c++上机作业7 项目二 最大公约数 最小公倍数问题 特殊三位数问题 素数数组问题
- 蓝桥杯校园选拔之循环素数
- 数论证明(任何一个素数倒数的循环小数位数一定小于素数本身)
- Java中循环问题:for,while,do-while 各种练习(打印上三角、下三角、输出100以内的素数、水仙花、最大公约、最小公倍数、分解质因数、兔子问题)
- 打印1到最大的n位数(循环方法)
- 5位数的循环素数
- HDU 1431 素数回文(打表+技巧,最大回文素数为9989899!!!)
- 5位数的循环素数
- 第一周 枚举 例题1.最大素数
- 蓝桥杯----算法训练 最大最小公倍数
- 输入一个字节内的数(0~255)和移动位数。输出移位结果(要求循环移位)提示:系统自带的移位都是非循环的
- 蓝桥杯 最大公共子串(代码填空)
- 第八届蓝桥杯【Java B组】最大公共子串
- 第八届蓝桥杯【省赛试题6】最大公共子串
- C语言循环结构简单练习2——判断一个数是否为素数
- 剑指offer 打印从1到最大的n位数 @python