首页 > 其他分享 >nflsoj 5926 素数环

nflsoj 5926 素数环

时间:2023-08-03 11:35:27浏览次数:36  
标签:nflsoj int 素数 5926 bool path

题目非常简单,只需要判断相邻两个数的和是不是素数,素数的判断参考数论

不过要注意的一点是题目说的是一个环,所以首尾两个数的和也要是素数

我在输出的时候加上了 is_prime(path[n-1]+1) 来判断

#include <iostream>
using namespace std;
const int N = 20;
int n;
int path[N];
bool st[N];


bool is_prime(int n)
{
	if(n<2) return false;
	for(int i=2;i<=n/i;i++)
	{
		if(n%i==0) return false;
	}
	return true;
}

void dfs(int u)
{
    if(u==n)
    {
        //因为是个环,所以最后一个数加上1的和也要是素数
        if(is_prime(path[n-1]+1))
        {
            for(int i=0;i<n;i++) printf("%d ",path[i]);
            printf("\n");
        }
        return;
    }
    for(int i=2;i<=n;i++)
    {
        if(!st[i]&&is_prime(path[u-1]+i))
        {
            path[u]=i;
            st[i]=true;
            dfs(u+1);
            st[i]=false;
        }
    }
}

int main()
{
    cin>>n;
    path[0]=1;
    dfs(1);
    return 0;
}

标签:nflsoj,int,素数,5926,bool,path
From: https://www.cnblogs.com/xiaozhu0602/p/17602829.html

相关文章

  • 1-100所有的素数个数
    素数:只能被1跟它本身整除的数 intsum=0; for(inti=2;i<100;i++){ booleanflag=true; for(intj=2;j<i/2;j++){ if(i%j==0){ flag=false; break; } } if(flag){ System.out.println("1-100为素数的值为:"+i); sum=sum+1; } } System......
  • 素数筛
    埃氏筛,时间复杂度o(n*log(log2n)),接近线性1for(inti=2;i<=n/i;i++)2if(!pri[i])//若i未被筛掉则必定是质数3for(intj=i*i;j<=n;j+=i)//枚举i的倍数必定是合数4pri[j]=1;欧拉筛(线性筛),时间复杂度o(......
  • c语言之判断100-200内的素数
    intmain()//判断100-200内的素数{ //判断素数,即只能被1和他自身整除 //1.试除法 //假设13为素数,就拿2-12的数来试着整除,若可以那就不是素数,若不可以就是素数 //由此可知:如果2到i-1的数可以被i给整除,那么i就不是素数 inti=0; intcount=0; for(i=100;i<=200;i+......
  • 找出一个大于给定整数且紧随这个整数的素数
    intis_prime(intn){ inti=0; if(n<=1) return0; for(i=2;i*i<=n;i++) { if(n%i==0) { return0; } } return1;}intfun(intn){ inti=n+1; while(!is_prime(i)) { i++; } returni;}intmain(){ intn=0; scanf("%d",......
  • 显示前100个回文素数python
    回文素数的科普1.什么是回文数?回文数是指从左到右和从右到左读起来都一样的数。比如,121、12321等都是回文数。2.什么是素数?素数是指大于1且只能被1和自身整除的数。比如,2、3、5、7等都是素数。3.什么是回文素数?回文素数是同时满足回文数和素数的数。比如,131、373等都是回......
  • 100到200的素数
    #include<math.h>intmain(){ intcount=0; inti=0; for(i=101;i<=200;i+=2) { intj=1; intflag=1; for(j=2;j<sqrt(i);j++) { if(i%j==0) { flag=0; break; } } if(flag==1) { count++; printf("%d",i......
  • abc084d <素数筛 前缀和>
    题目D-2017-likeNumber思路筛出数据范围1e5范围内的素数检查每个素数是否为2017-like对1~1e5内的2017-like求前缀和,回答询问总结如果数据范围允许,进行预处理,查表回答询问代码Code//https://atcoder.jp/contests/abc084/tasks/abc084_d#include<iostre......
  • Miller_rabin 素数测试 学习笔记
    Miller_rabin素数测试一种用来判断素数的算法。前置芝士威尔逊定理若\(p\)为素数,\((p-1)!\equiv-1(\modp)\)。证明:充分性证明:如果\(p\)不是素数,那么他的因数必定存在于$1,2,3,\dots,p−1$之中,所以\(\gcd((p-1)!,p)\),那么\((p-1)!\not\equiv-1\)。必要性证......
  • HJ60 查找组成一个偶数最接近的两个素数
    1.题目读题HJ60 查找组成一个偶数最接近的两个素数  考查点 2.解法思路 代码逻辑 具体实现publicclassHJ60{publicstaticvoidmain(String[]args){Scannersc=newScanner(System.in);intn=sc.nextInt();getPrimeNu......
  • Miller_Rabin算法快速判断大数是否为素数
    Miller_Rabin算法快速判断大数是否为素数并不是绝对,这只是一种判断大概率为素数的方法首先根据费马小定理有:\(a^{p-1}=1\pmodp(a不为p的倍数且p不是素数)\)又因为\(p\)为素奇数,所以\(p-1\)为偶数,表示为\(p-1=2^dm\)所以有\(a^{p-1}-1=0\pmodp\)\(a^{2^dm}-1=0\pmodp\)\((......