• 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
     
     
     
     
     
  • 相关阅读:
    Linux系统root密码修改
    网络通信
    运维平台cmdb开发-day1
    questions information
    Django Rest Framework
    Django-CBV和跨域请求伪造
    Flask学习
    会议室预定终章
    python的可变数据类型和不可变类型
    模拟admin组件自己开发stark组件之搜索和批量操作
  • 原文地址:https://www.cnblogs.com/zhazhaacmer/p/9402115.html
Copyright © 2020-2023  润新知