zoukankan      html  css  js  c++  java
  • 2018/7/31-zznu-oj- 2128: 素数检测 -【费马小定理裸应用】

    2128: 素数检测

    时间限制: 1 Sec  内存限制: 128 MB
    提交: 84  解决: 32
    [提交] [状态] [讨论版] [命题人:admin]

    题目描述

    在算法竞赛中你会遇到各种各样的有关素数的问题,今天你来解决一个最基础的问题:如何判定一个素数。
    对于给定的正整数p,若p非素数,输出-1
    若p是素数 输出 :{sigma(a^(p-1) % p) ,其中a的下界为1,上界为p-1}
    即:

    输入

    多实例测试,每组数据包含一个正整数p(p < 10^16)。 

    输出

    根据情况输出一个正整数,保证答案在int64之内,输出占一行。 

    样例输入

    2

    样例输出

    1

    提示

    若一个数有99.9755%以上的概率为素数,你便可以认为这个数字为素数。
     

     

    大致思路:

       利用费马小定理,其内容为: 假如p是质数,且gcd(a,p)=1,那么 a(p-1)≡1(mod p),例如:假如a是整数,p是质数,则a,p显然互质(即两者只有一个公约数1);

           那么我们可以得到费马小定理的一个特例,即当p为质数时候, a^(p-1)≡1(mod p), 这个公式意思就是:a^(p-1) 和1 同时对p 取模的结果是一致的!!!

                                                                                                                                                                                                                                         ——百度百科

    代码:

      
     1 #include <iostream>
     2 #include<stdio.h>
     3 #include<string.h>
     4 #include<string>
     5 #include<algorithm>
     6 #define ll long long
     7 using namespace std;
     8 #include<math.h>
     9 #define N 1008
    10 #define M 100008
    11 using namespace std;
    12 #define ll long long
    13 int prime(ll n){
    14     for(int i=2;i<=(int)sqrt(1.0*n) ;i++){
    15         if(n%i==0)
    16             return 1;
    17     }
    18     return 0;
    19 }
    20 int main()
    21 {
    22     ll T;
    23 
    24     while(scanf("%lld", &T)!=EOF)
    25     {
    26         if(prime(T)==1)
    27             printf("-1
    ");
    28         else
    29             printf("%lld
    ", T-1);
    30     }
    31 
    32     return 0;
    33 }
    View Code
     
     
     
     
     
  • 相关阅读:
    反射(五)之动态代理的作用
    反射(四)之反射在开发中的适用场景及利弊
    反射(三)之通过反射获取构造方法, 成员变量, 成员方法
    反射(二)之反射机制
    反射(一)之初探反射
    java多线程(五)之总结(转)
    java多线程(四)之同步机制
    java多线程(三)之售票案例
    java多线程(二)之实现Runnable接口
    java多线程(一)之继承Thread类
  • 原文地址:https://www.cnblogs.com/zhazhaacmer/p/9402115.html
Copyright © 2011-2022 走看看