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;
    }
    



  • 相关阅读:
    node.js如何让前端请求时能跨域
    手把手教你使用webpack搭建vue框架
    手把手教你使用koa2
    react性能优化
    axios post 踩坑之 post传参
    小程序自定义左上角返回按钮跳转到指定界面
    webpack入门教程
    编写可维护的js代码
    js的严格模式
    vue短信验证性能优化写入localstorage中
  • 原文地址:https://www.cnblogs.com/riskyer/p/3266752.html
Copyright © 2011-2022 走看看