完全素数
来源:互联网 发布:linux mysql命令 编辑:程序博客网 时间:2024/06/06 03:14
Description
设一个m位素数p由高到低每一位分别是a1, a2, ..., am. 定义一个素数是完全素数当且仅当对于任意k(1<=k<=m)都有由a1到ak组成的数(a1a2...ak)均为素数。如,2333就是一个完全素数,因为2, 23, 233, 2333都是完全素数。
现在给定整数m(1<=m<=8),试求出所有m位的完全素数。
Input
输入包含1个整数m(1<=m<=8)
Output
输出若干行,每一行包含一个m位的完全素数,由小到大输出。
Sample Input
3
Sample Output
233239293311313317373379593599719733739797
这道题用暴力解法会超时。这里可以用到递归跟深度优先搜索(DFS)----其实这两个都不是很懂。。。姑且让我装个B。。
下面是代码:
#include<bits/stdc++.h>using namespace std;int w;//w代表你输入的位数bool is(int n)//bool用来判断n是否为质数。如果是返回1,如果不是返回0. get到一个判断质数新方法。{if(n==1) return 0;for(int i=2;i*i<=n;i++)//注意这里是i*i<=n,如果是i*i<n,就不成立了。{if(n%i==0) return 0;}return 1;}void dfs(int num,int cnt)//这里是用递归思想。cnt表示实际的位数{if(!is(num)) return;if(cnt==w)//如果cnt等于输入的位数,则输出判断过后的质数。{cout<<num<<endl;return;}if(cnt<w)//如果cnt小于输入的位数,则,再次调用dfs函数,例如将1变成1*10+1=11,接着变成12.13等。 { //同时位数+1。for(int i=1;i<10;i++){dfs(num*10+i, cnt+1);}}}int main(){while(cin>>w){for(int i=2;i<10;i++){dfs(i,1); //调用dfs函数,判断是否为质数。}} return 0;}
利用这种方法,可以减少判断的次数。比如,一位数满足的条件的是2,3,5,7。二位数只需要判断20+,30+,50+,70+。
0 0
- 完全素数
- 完全素数
- 素数与完全数
- 素数筛法计算完全数
- 171020—Fibonacci数列&失败的素数完全分解。
- 素数
- 素数
- 素数
- 素数
- 素数
- 素数
- 素数
- 素数
- 素数
- 素数
- 素数
- 素数
- 素数
- 俺自己的网站上线啦,求围观
- java Cookie实战教程之留下的痕迹
- 是时候写篇博客了,关于linux和http
- ZOJ 1037 Gridland
- 我自己做的网站终于上线啦,求围观www.yustock.live
- 完全素数
- Java、Scala、Go以相同方式实现快速排序代码量比较
- 错误处理集锦
- Unity3d向web服务器发送数据
- OLE DB访问接口“MICROSOFT.JET.OLEDB.4.0”配置为在单线程单位模式下运行,所以该访问接口无法用于分布式
- 牛顿迭代法与一道经典编程问题
- 1.获得项目中info.plist文件的内容 2.沙盒的数据存储及读取 3.控制器view的高度和状态栏statusBar的关系 4.[UIScreen mainScreen].application
- QT环境问题
- 我的第一篇博客文章!