算法题每日一练---第14天:等差素数列

简介: 2,3,5,7,11,13,.... 是素数序列。 类似:7,37,67,97,127,157这样完全由素数组成的等差数列,叫等差素数数列。

一、问题描述


2,3,5,7,11,13,.... 是素数序列。 类似:7,37,67,97,127,157这样完全由素数组成的等差数列,叫等差素数数列。

上边的数列公差为 30,长度为 6。

2004 年,格林与华人陶哲轩合作证明了:存在任意长度的素数等差数列。 这是数论领域一项惊人的成果!

有这一理论为基础,请你借助手中的计算机,满怀信心地搜索:

长度为 10 的等差素数列,其公差最小值是多少?


二、题目要求


考察

素数判断建议用时10~20min


三、问题分析


首先,对于素数的判断,只能被1和自身整除的数为素数。单独构造一个函数,把6000以内的素数存储到数组中。


判断函数主要判断数字是否为素数,主函数使用三重for循环,第一层是数组内存储的所有素数,第二层是等差数列的公差,第三层是10个符合条件的素数。


如果a[i]+j*k还是素数,判断10次之后,任然成立,则输出当前位置的公差j,当前的公差就是所求的结果。


四、编码实现


#include<iostream>#include<math.h>//头文件包含sqrt开根号 usingnamespacestd;
booljudge(intn)//判断是不是素数 {
inti;
for(i=2;i<=sqrt(n);i++)//使用开根号减少数据量    {
if(n%i==0)
returnfalse;//返回错误    }
returntrue;//返回正确}
intmain()
{
inti,j,k,length=0,a[5000],sum=0;//定义数组的长度 for(i=2;i<6000;i++)//循环6000以内的所有素数     {
if(judge(i))//是素数         {
a[length++]=i;//存储到数组         }
    }
for(i=0;i<length;i++)//第一层循环     {
for(j=1;j<500;j++)//第二层循环         {
sum=0;//初始值 for(k=0;k<10;k++)//第三层for循环             {
if(judge(a[i]+j*k))//判断接下来10个数字                 {
sum++;//符合条件                 }
            }
if(sum==10)//成功找到             {
cout<<j;//输出公差 exit(0);//退出循环             }
        }
    }
return0;
}


五、输出结果


结果具体为:210


相关文章
|
算法
初阶OI素数算法——埃拉托尼斯筛
时间复杂度比较优秀且易于理解的素数筛选法
69 0
|
6天前
|
算法 Java 程序员
【算法每日一练及解题思路】有n级台阶,一次只能上1级或2级,共有多少种走法?
本文深入解析了“爬楼梯问题”,探讨了递归与迭代两种解法,并提供了Java代码实现。通过分析问题本质,帮助读者理解动态规划技巧,提高解决实际编程问题的能力。关键词:Java, 算法, 动态规划, 爬楼梯问题, 递归, 迭代。
17 0
|
2月前
|
存储 算法 Java
LeetCode初级算法题:反转链表+统计N以内的素数+删除排序数组中的重复项Java详解
LeetCode初级算法题:反转链表+统计N以内的素数+删除排序数组中的重复项Java详解
40 0
|
4月前
|
算法 Serverless 数据安全/隐私保护
RSA算法中,为什么需要的是两个素数?
PrimiHub是密码学专家团队开发的开源隐私计算平台,关注数据安全、密码学等领域。RSA算法使用两个素数确保安全,因为它们的乘积易于计算,但分解困难,形成加密基础。算法涉及选择大素数、计算乘积、生成公私钥对。加密时,消息通过公钥变形;解密则需私钥,安全性依赖于大数分解问题的复杂性。
宝藏例题(欧几里得算法+素数的三种境界………)
宝藏例题(欧几里得算法+素数的三种境界………)
宝藏例题(欧几里得算法+素数的三种境界………)
|
存储 算法 Python
信息学奥赛 试除法:高效筛选素数的算法
本文介绍了在Python代码中如何使用试除法高效筛选素数。
125 0
|
5月前
|
机器学习/深度学习 存储 算法
数据结构与算法面试题:给定非负整数 m 和 n,计算不大于 m 的数字中,素数的个数。(提示:算法原理为埃氏筛、线性筛)
数据结构与算法面试题:给定非负整数 m 和 n,计算不大于 m 的数字中,素数的个数。(提示:算法原理为埃氏筛、线性筛)
81 0
|
存储 分布式计算 算法
转:如何利用素数算法加强企业文档管理软件的效能和安全性
利用素数算法来加强企业文档管理软件的效能和安全性,可是个有趣的法子。这可不只是在电影里才看得到的情节,素数算法可以在好几个方面给软件的性能和安全性添点料。下面就来看看有哪些酷炫的方式吧——
87 0
|
算法
转:素数算法,看看电脑是怎么找素数的
素数算法主要应用于计算科学,密码学和数论等领域。例如,在密码学中,素数算法用于生成密钥;在数论中,素数算法用于研究质数分布。素数算法的历史可以追溯到公元前300年左右的古希腊数学家,他们发现了素数的重要性。随着数学和计算机科学的发展,素数算法也在不断改进和提高。
186 2
|
算法 前端开发
前端算法-Excel表的列名称
前端算法-Excel表的列名称