zoukankan      html  css  js  c++  java
  • hdu 1905 幂成

    题意://给一个p 和一个a,如果这个
    //p 本身就是一个素数,就输出no,如果不是素数,那么计算 ( a ^ p) % p 如果结果等于a 那么输出yes 否则输出no

    zsd:用__int64的时候一定要注意__int64与别的数转化的时候会出错误 所以一定要都是__int64位

    //给一个p 和一个a,如果这个
    //p 本身就是一个素数,就输出no,如果不是素数,那么计算 ( a ^ p) % p 如果结果等于a 那么输出yes 否则输出no
    #include<iostream>
    #include<cmath>
    using namespace std;
    bool isprime(int x)
    {
    	for(int i=2;i<=(int)sqrt(x*1.0)+1;i++)
    		if(x%i==0)
    			return false;
    	return  true;
    }
    bool fun(__int64 x,__int64 e,__int64 p)
    {
    	__int64 a=x;
    	__int64 base=x;
    	__int64 sum=1;
    	while(e>0)
    	{
    		if(e&1) sum=(sum*base)%p;
    		e/=2;
    		base=(base*base)%p;
    	}
    	if(sum==a)
    		return true;
    	return false;
    }
    int main()
    {
    	__int64 p,a;
    	while(scanf("%I64d%I64d",&p,&a)!=EOF)
    	{
    		if(p==a&&p==0) break;
    		if(isprime(p)) printf("no
    ");
    		else
    			if(fun(a,p,p))
    				printf("yes
    ");
    			else printf("no
    ");
    	}
    	return 0;
    }
    
  • 相关阅读:
    oracle取字符串长度的函数length()和hengthb()
    文件操作
    numpy 库使用
    numpy 与 matplotlib 的应用过程
    使用numpy与matplotlib.pyplot画图
    面向对象的解读
    Python PIL
    Note of Jieba
    python 游戏 —— 汉诺塔(Hanoita)
    有进度条圆周率Π计算
  • 原文地址:https://www.cnblogs.com/zhangdashuai/p/3700908.html
Copyright © 2011-2022 走看看