Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >素数环-dfs+素数打表

素数环-dfs+素数打表

作者头像
知识浅谈
发布于 2020-03-24 09:14:00
发布于 2020-03-24 09:14:00
60800
代码可运行
举报
文章被收录于专栏:分享学习分享学习
运行总次数:0
代码可运行

素数环-dfs+素数打表(易理解)

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#include<stdio.h>
#include<string.h>
int a[50],b[50],vis[50],n;
void prime(){                  //素数打表 
	memset(a,0,sizeof(a));
	a[0]=a[1]=1;    //素数为0非素数为1
	for(int i =2;(!a[i])&&i<50;i++) //a[i]=1表明是素数,则其倍数也是素数因为i就是前边的素数的倍数
		for(int j=i+i;j<50;j+=i)
			a[j]=1;
}
bool dfs(int num){            
	for(int j=2;j<=num;j++){
		if(a[b[j-1]+b[j]]) return false;//如果相邻的两个相加不是素数就返回 
	}
	if(num==n){               //当个数够n个之后就查看最后一个和第一个相加是否是素数 
		if(!a[b[n]+b[1]]){
			return true;
		}
	} 
	for(int i=1;i<=n;i++){ 
		if(!vis[i]){
			b[num]=i;    //把b环中的第nnum个数复制成i  并标记使用过i 
			vis[i]=1;
			return dfs(num+1);
			vis[i]=0; 
		}
	}
} 
int main()
{
	prime(); 
	while(~scanf("%d",&n)){
		if(n==0||n==1) printf("无\n");
		if(n%2==0){
			memset(vis,0,sizeof(vis));		//vis记录是否访问过 
			if(dfs(0)); //dfs中记录的是已经添加到b中的个数 
				printf("有\n");	
		} 
		else printf("无\n"); 				//因为当n是奇数的时候,环中肯定有两个奇数相邻,两个奇数相加肯定是偶数 
	}
	
}  
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
2018 蓝桥杯省赛 B 组模拟赛(五) B 结果填空:素数个数
题目链接: https://nanti.jisuanke.com/t/25085
Ch_Zaqdt
2019/01/10
3470
poj 3126 Prime Path
Description The ministers of the cabinet were quite upset by the message from the Chief of Security
用户1624346
2018/04/17
6070
poj 3126 Prime Path
Prime Path(POJ - 3126)【BFS+筛素数】
1.题目主要就是给定你两个四位数的质数a,b,让你计算从a变到b共最小需要多少步。要求每次只能变1位,并且变1位后仍然为质数。
_DIY
2020/10/10
9950
PAT(乙级)1007.素数对猜想(20)
让我们定义d​n为:dn=pn+1−p​n,其中p​i是第i个素数。显然有d1=1,且对于n>1有dn是偶数。"素数对猜想"认为 “存在无穷多对相邻且差为2的素数”。现给定任意正整数N(<10^5​​ ),请计算不超过N的满足猜想的素数对的个数。 输入格式: 输入在一行给出正整数N。
lexingsen
2022/02/25
2330
2017 Multi-University Training Contest - Team 1 1006&&HDU 6038 Function【DFS+数论】
Function Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Others) Total
Angel_Kitty
2018/04/09
5530
2017 Multi-University Training Contest - Team 1 1006&&HDU 6038 Function【DFS+数论】
HDOJ 1016 Prime Ring Problem素数环【深搜】
Problem Description A ring is compose of n circles as shown in diagram. Put natural number 1, 2, …, n into each circle separately, and the sum of numbers in two adjacent circles should be a prime.
谙忆
2021/01/21
3170
HDOJ 1016 Prime Ring Problem素数环【深搜】
洛谷题解UVA524 素数环
https://www.luogu.org/problemnew/show/UVA524
海天一树
2019/05/05
5000
2570 绝对素数
2570 绝对素数 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题目描述 Description 一个自然数是素数,且它的数字位置经过任意对换后仍为素数,则称为绝对素数,例如13。请找出所有x位的绝对素数的数量。 输入描述 Input Description 输入正整数x 输出描述 Output Description x位的绝对素数的数量 样例输入 Sample Input 1 样例输出 Sample Output 4 数据范围及提示 Data Size
attack
2018/04/13
7790
数论-素数
若两个素数相差2则称为一对孪生素数,求区间[1,n]内的孪生素数个数。 筛法素数打表,然后判断孪生,用前缀和记录。
唔仄lo咚锵
2020/09/15
6090
poj 1011 Sticks (DFS+剪枝)
George took sticks of the same length and cut them randomly until all parts became at most 50 units long. Now he wants to return sticks to the original state, but he forgot how many sticks he had originally and how long they were originally. Please help him and design a program which computes the smallest possible original length of those sticks. All lengths expressed in units are integers greater than zero.
全栈程序员站长
2022/07/10
2230
nyoj---快速查找素数
快速查找素数 时间限制:1000 ms  |  内存限制:65535 KB 难度:3 描述现在给你一个正整数N,要你快速的找出在2.....N这些数里面所有的素数。 输入给出一个正整数数N(N<=2000000) 但N为0时结束程序。 测试数据不超过100组输出将2~N范围内所有的素数输出。两个数之间用空格隔开样例输入 5 10 11 0 样例输出 2 3 5 2 3 5 7 2 3 5 7 11 来源经典题上传者路过这 同一道题,虽然用同一种方法,但是,效率还是有差别的.... 试除法。。。(1)
Gxjun
2018/03/21
7640
素数推断算法(高效率)
关于素数的算法是信息学竞赛和程序设计竞赛中常考的数论知识,在这里我跟大家讲一下寻找一定范围内素数的几个算法。看了以后相信
全栈程序员站长
2022/07/14
3400
Prime Ring Problem hdu 1016
A ring is compose of n circles as shown in diagram. Put natural number 1, 2, ..., n into each circle separately, and the sum of numbers in two adjacent circles should be a prime. Note: the number of first circle should always be 1.
用户2965768
2018/08/30
3550
Prime Ring Problem hdu 1016
POJ 3126 Prime Path(bfs)
       简单的bfs搜索 AC代码: #include <iostream> #include <cstdio> #include <cstring> #include <queue> #include <cmath> using namespace std; const int MAXN = 10000; struct Node{ int num,step; }Now,Next; int vis[MAXN]; int s,e,n; bool Prime[MAXN]; void prime(
Ch_Zaqdt
2019/01/10
3690
LightOJ - 1197 区间素数筛模版
给t给样例,每个样例a,b两个数,求区间[a,b]内素数的个数,(1 ≤ a ≤ b < 2^31, b - a ≤ 100000).
用户2965768
2019/08/01
2720
poj 3126 Prime Path (广搜)
http://poj.org/problem?id=3126 题意:从一个素数,挨个数位的变换,在此过程中保证每次变换的数位都是素数,最后变到所给的另一个素数最少步多少 分析:广搜,依次换一位数字,判
用户1624346
2018/04/17
5420
codeforces 327 B. Hungry Sequence
题目就是让你输出n个数的序列,要保证该序列是递增的,并且第i个数的前面不能保护它的约数,我直接先对前100000的素数打表,然后输出前n个,so easy。
xindoo
2021/01/22
2920
大一的算法笔记
1.求三个最大数中,老师用了函数,系统函数max,而且是镶嵌套用。 再看自己的代码,可以看出效率的高低。在今后的数量大小比较中,应该学会使用 max系统函数,同时掌握其他系统函数。
废江_小江
2022/09/05
3030
最多因子数(DFS+数论+剪枝)- CodeVS 1032
数学家们喜欢各种类型的有奇怪特性的数。例如,他们认为945是一个有趣的数,因为它是第一个所有约数之和大于本身的奇数。
ACM算法日常
2018/08/07
1.1K0
最多因子数(DFS+数论+剪枝)- CodeVS 1032
SDUT 1125 New Game 【 DFS 】
New game是在一个M*M的特殊棋盘(棋盘的第i行都标上了数字i)上进行的新式游戏。给定一个数字N,要求选手把一个棋子从左上角(1,1)移到右下角(M,M),移动时只能往右或往下。要求移动后经过的数字和为N,且拐弯的次数最少。 如果对给出的N,选手不能找出移动方案使得经过的数字和为N或找出的路径拐弯次数不是最少,选手就输了。所以,选手一定千方百计要找出满足条件的路径!!
Lokinli
2023/03/09
1260
相关推荐
2018 蓝桥杯省赛 B 组模拟赛(五) B 结果填空:素数个数
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档