美文网首页
1622:判断数(快速幂+素数)

1622:判断数(快速幂+素数)

作者: Celia_QAQ | 来源:发表于2019-07-06 20:10 被阅读0次

Description
给定一个n , 我们把对任意的1<x<n都有 x^n=x(mod n)成立的合数 n 称为good number。现求该数是否为good number。
Input
输入一个数 n (n<1000000)
Output
输出YES或NO
Sample Input
561
21
Sample Output
YES
NO
思路:快速幂运用+素数判断
一直在OLE和RE中来回跳转。。。。
重点还是数组得开大不开小,还有输入不要多写。。想太多系列
附上参考https://blog.csdn.net/ZCMU_2024/article/details/81634556https://www.cnblogs.com/murmured/p/5004067.html两位巨巨,感谢!!

#include<vector>
#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<map>
#include<algorithm>
#include<stdlib.h>

using namespace std;
typedef long long ll;
const int maxn=1000005;
bool a[maxn];int n;
ll pow(ll a,ll b,ll mod){//快速幂 
    ll sum=1;
    while(b){
        if(b&1) sum=sum*a%mod;
        a=a*a%mod;
        b>>=1;
    }
    return sum;
}
int main(){
    memset(a,0,sizeof(a));
    //素数判断 
    for(int i=2;i<=maxn;i++){
            for(int j=i*2;j<=maxn;j+=i)
                a[j]=1;
    }
    //
    while(~scanf("%d",&n))
    {
        bool flag=true;
        if(!a[n]) flag=false;
        if(flag)
            for(ll i=2;i<n;i++)
            {
                ll temp=pow(i,n,n);
                if(temp!=i){
                    flag=false;
                    break;
                }
            }
        
        if(flag)printf("YES\n");
        else printf("NO\n");    
    } 

     return 0;
}

相关文章

  • 1622:判断数(快速幂+素数)

    Description给定一个n , 我们把对任意的1

  • 快速判断x的幂——x进制法 2020-07-27(未允禁转)

    快速判断x的幂——x进制法 1.快速判断一个数是否为2的幂 思路:如果一个数是2的幂,那么它的二进制数一定只含有一...

  • 数论模版

    参考我的博客代码github 数论 最大公约数(GCD)/最小公倍数(LCM) 素数判断及打表 快速幂/乘取模 拓...

  • python 判断1-100内的素数

    。。。。 判断1-100内的素数,第一个for循环是要判断的素数的范围,第二个for循环是判断该数是否为素数

  • golang判断素数,水仙花数和求阶乘

    1) 判断素数 2) 判断水仙花数 3) 求阶乘

  • JS if判断,for,while,dowhile 循环试题

    素数 题目:判断 101-200 之间有多少个素数,并输出所有素数。 水仙花数 题目:打印出所有的 "水仙花数",...

  • 求素数

    求100到200的素数 输入一个大于3的数,判断是不是素数

  • 素数

    1、素数的定义:(1)除了1和本身之外,不能被其他数整除的一类数(2)注意1既不是素数,也不是合数 2、素数的判断...

  • 使用生成器

    isPrime函数判断一个数是不是素数 prime是一个素数生成器 main函数的功能是,判断一个数可以由多少对素...

  • 超级素数幂

    如果一个数能表示成 p^q,且p是一个素数,q为大于1的正整数,则此数就是超级素数幂 return: 如果是,返回...

网友评论

      本文标题:1622:判断数(快速幂+素数)

      本文链接:https://www.haomeiwen.com/subject/yqrphctx.html