蓝桥杯:超级质数-创新互联
目录
10年积累的网站制作、做网站经验,可以快速应对客户对网站的新想法和需求。提供各种问题对应的解决方案。让选择我们的客户得到更好、更有力的网络服务。我虽然不认识你,你也不认识我。但先制作网站后付款的网站建设流程,更有沈阳免费网站建设让你可以放心的选择与我们合作。题目链接
问题描述
答案提交
本题答案为:373。
思路:
模拟代码(Java):
问题描述
如果一个质数 P 的每位数字都是质数, 而且每两个相邻的数字组成的两位 数是质数, 而且每三位相邻的数字组成的三位数是质数, 依次类推, 如果每相 邻的 k 位数字组成的 k 位数都是质数, 则 P 称为超级质数。
如果把超级质数 P 看成一个字符串, 则这个超级质数的每个子串都是质数。
例如, 53 是一个超级质数。
请问, 大的超级质数是多少?
答案提交这是一道结果填空的题, 你只需要算出结果后提交即可。本题的结果为一 个整数, 在提交答案时只填写这个整数, 填写多余的内容将无法得分。
本题答案为:373。 思路:首先P的每位数字要是质数。然后看相邻k位数字组成的k位数都是质数,也就是将该数字看作字符串,他的其中一个子串要是质数,跟下面的条件冲突,所以这里不额外分析。
其次就是把这个数字看成字符串,该字符串的每个子串都要是质数。
其实很简单的模拟,就两点要求:
- 该数字必须是质数,并且每一位都是质数
- 该数字的所有子串都必须是质数
看完要求,我们再分析。
条件一就是,该数字是质数,很简单,我们写一个for来判断就可以了,质数的定义就是除了1和2之外没有一个小于他的数整除。
//在判断number是否为质数
for(int i = 2;i
其次,这个数字的每一位都是质数,也就是我们需要对他的每一位进行判断。因为10以内的质数只有2,3,5,7,所以我们只需要判断每一位是否为2,3,5,7即可。
我这里用了一个boolean数组判断位数,hash[2] == hash[3] == hash[5] == hash[7] == true,其余为false。大家也可以直接判断这个数是不是2,3,5,7就行了。
//先判断每一位是否为质数
int x = number;
while( x >0) {
if(hash[x%10]==false) return false;
x /= 10;
}
条件二就是,判断该数字的所有子串是否为质数,我们只需要把这个数字的所有子串求出来,可以选择set去重,然后在遍历子串的时候转换成整型,调用我们写的条件一的方法来判断这个数字是否为质数就行了。
//子串存放在set中
Setset = new HashSet<>();
int n = number.length();
for(int i = 0;i
模拟代码(Java):因为是填空题,只需要提交答案,我们可以自己模拟,我模拟的时候,超级质数的上限选择了整型的上限。我用自己的电脑跑大约耗时5s。
import java.util.*;
// 1:无需package
// 2: 类名必须Main, 不可修改
public class Main {
static boolean[] hash;
public static void main(String[] args) {
//十以内的质数是2,3,5,7
//直接初始化一个数组用来判断i是否每一位都是质数
hash= new boolean[10];
Arrays.fill(hash,false);
hash[2] = true;
hash[3] = true;
hash[5] = true;
hash[7] = true;
long startTime=System.currentTimeMillis(); //获取开始时间
//循环找大的超级质数
for(int i = 53;i0) {
if(hash[x%10]==false) return false;
x /= 10;
}
//在判断number是否为质数
for(int i = 2;iset = new HashSet<>();
int n = number.length();
for(int i = 0;i
运行结果为:
你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧
网站栏目:蓝桥杯:超级质数-创新互联
分享链接:http://cdiso.cn/article/esjcg.html