zoukankan      html  css  js  c++  java
  • poj3641:伪素数检测

    知道miller robin 素数测试中的伪素数定义就可以很容易解决,详见总结帖

    #include <iostream>
    #include<stdio.h>
    #include<algorithm>
    #include<time.h>
    #include<math.h>
    using namespace std;
    long long n;long long multi(long long a,long long b,long long m)//a*b%m
    {
        long long res=0;
        while(b>0)
        {
            if(b&1)
                res=(res+a)%m;
            b>>=1;
            a=(a<<1)%m;
        }
        return res;
    }
    long long quickmod(long long a,long long b,long long m) //a^b%m
    {
        long long res=1;
        while(b)
        {
            if(b&1)
                res=multi(res,a,m);
            b>>=1;
            a=multi(a,a,m);
        }
        return res;
    }
    bool isprime(long long n)
    {
        for(int i=2;i*i<=n;i++)
        {
            if(!(n%i))
                return 0;
        }
        return 1;
    }int main()
    {
        long long p,a;
        while(scanf("%I64d%I64d",&p,&a),p+a)
        {
            if(isprime(p))
            {
                puts("no");
                continue;
            }
            if(quickmod(a,p,p)==a)
                puts("yes");
            else
                puts("no");
        }
        return 0;
    }
  • 相关阅读:
    ANT安装
    MAVEN配置教程
    闲笔
    js系列
    微信小程序系列_require
    c++复习系列
    codeblocks系列
    mysql系列
    Google Developer Tools
    数学建模算法(三):神经网络
  • 原文地址:https://www.cnblogs.com/oneshot/p/3979866.html
Copyright © 2011-2022 走看看