zoukankan      html  css  js  c++  java
  • UVA10006

    题目链接:UVA10006

    本来想直接打素数表,然后根据素数表来判断,结果一直超时,后来把素数表去掉,再在for循环中加判断才勉强过了。

    Some numbers that are not prime still pass the Fermat test with every number smaller than themselves. These numbers are called Carmichael numbers.

    只要按着这两个条件判断即可。

    具体看代码:

    #include<iostream>
    #include<cmath>
    #include<cstdlib>
    using namespace std;
    bool isPrimer(int num);
    int powerMode(int,int,int);
    //bool primeTable[65010];
    int main()
    {
    //    for(int i=1;i<=65010;i++)
    //        if(isPrimer(i))
    //            primeTable[i]=1;   //素数标为1
    //        else
    //            primeTable[i]=0;
        int number;
        while(cin>>number,number!=0)
        {
            bool flag=0;
            //  not prime
            if(isPrimer(number))
                flag=1;
            // pass the Fermat test with every
            // number  smaller than themselves.
            //Let a be a random number between 2 and n - 1
            for(int i=2;(i<number)&&!flag;i++)
                if(powerMode(i,number,number)!=i)
                    flag=1;
    
            if(flag)
                cout<<number<<" is normal."<<endl;
            else
                cout<<"The number "<<number<<" is a Carmichael number."<<endl;
        }
        return 0;
    }
    bool isPrimer(int number)
    {
        if(number<=2)
            return true;
        if(number%2==0)
            return false;
        for(int i=3;i<=ceil(sqrt(number));i++)
            if(number%i==0)
                return false;
        return true;
    }
    //计算 pow(a,n)%n=a
    int powerMode(int a,int n,int mode)
    {
        long long  answer=1;
        while(n)
        {
            if(n&1)  
                answer=(answer*a)%mode;
            a=((long long )a*a)%mode;
            n=n>>1;
        }
        return answer;
    }
    



  • 相关阅读:
    ORACLE日期时间函数大全
    Oracle 11.2.0.4 Data Guard 部署练习【一主一备/单机】
    Oracle 11.2 RAC 添加节点
    Oracle 11.2 RAC 删除节点
    Oracle 11.2 RAC on Redhat 6.5 安装最佳实践
    MongoDB复制集概念架构浅析
    Linux下MongoDB单实例的安装和配置详解
    抓包
    openstack安全组
    chrome headless 截图
  • 原文地址:https://www.cnblogs.com/riskyer/p/3266752.html
Copyright © 2011-2022 走看看