Pseudoprime numbers(快速幂模板题)

2023-11-03

Fermat’s theorem states that for any prime number p and for any integer a > 1, ap = a (mod p). That is, if we raise a to the pth power and divide by p, the remainder is a. Some (but not very many) non-prime values of p, known as base-a pseudoprimes, have this property for some a. (And some, known as Carmichael Numbers, are base-a pseudoprimes for all a.)

Given 2 < p ≤ 1000000000 and 1 < a < p, determine whether or not p is a base-a pseudoprime.

Input

Input contains several test cases followed by a line containing “0 0”. Each test case consists of a line containing p and a.

Output

For each test case, output “yes” if p is a base-a pseudoprime; otherwise output “no”.

Sample Input

3 2
10 3
341 2
341 3
1105 2
1105 3
0 0

Sample Output

no
no
yes
no
yes
yes

题意描述:

输入一对p和a,如果p是素数,输出no;如果p不是素数,判断a^p对p取余是否等于a。

解题思路:

套快速幂模板直接AC

代码:

#include<bits/stdc++.h>
long long int qpow(long long int a,long long int b)//快速幂模板
{
    long long int ans = 1,t=b;
    while(b){
        if(b&1)        //如果n的当前末位为1
            ans=(ans*a)%t;  //ans乘上当前的a
        a=(a*a)%t;        //a自乘
        b >>= 1;       //n往右移一位
    }
    return ans%t;
}
long long int prime(long long int n)
{
    long long int i,k;
    if(n== 0) 
	return 0;
    k=sqrt(n);
    for(i=2;i<=k;i++)
    {
        if(n%i==0) 
		return 0;
    }
    return 1;
}
int main()
{

    long long int p,a;
    while(scanf("%lld %lld",&p,&a) &&p+a)
    {
        if(prime(p))
		printf("no\n");
        else
        {
            if(qpow(a,p) == a)
			printf("yes\n");
            else
            printf("no\n");
        }

    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Pseudoprime numbers(快速幂模板题) 的相关文章

随机推荐

  • 前端的图片压缩image-compressor(可在图片上传前实现图片压缩)

    转载自 作者 言墨儿 链接 https www jianshu com p 3ce3e3865ae2 作者 UYOU 链接 https www imooc com article 40038 来源 慕课网 image compressor
  • [网络安全自学篇] 十七.Python攻防之构建Web目录扫描器及ip代理池(四)

    这是作者的系列网络安全自学教程 主要是关于网安工具和实践操作的在线笔记 特分享出来与博友共勉 希望您们喜欢 一起进步 前文分享了Python弱口令攻击 自定义字典生成 调用Python的exrex库实现 并结合Selenium和BurpSu
  • html标签的分类

    HTML标签分类 在HTML页面中 带有 lt gt 符号的元素被称为HTML标签 如上面提到的 都是HTML标签 所谓标签就是放在 lt gt 标签符中表示某个功能的编码命令 也称为HTML标签或 HTML元素 1 双标签 lt 标签名
  • c++之qt学习 基本介绍 界面设计 串口

    这里写目录标题 qt基类介绍 qt不同版本 qt下载 打开qt creater 制作简单qt界面 ui界面 点击forms 双击ui文件 就可以进入ui编辑器 qt信号和槽 给界面增加图片 界面布局 布局不会影响代码 界面切换 更改代码 验
  • ctf.show web 刷题记录

    文章目录 红包题第二弹 web13 web14 方法一 方法二 红包题第六弹 红包题第二弹 打开题目 提示参数cmd 我们随便输入 cmd 1 得到源代码 ctf show 红包题 where is the flag
  • 微信扫物上线,全面揭秘扫一扫背后的识物技术!

    导语 12月23 日 微信扫物 iOS 版本正式上线 从识别特定编码形态的图片 到精准识别自然场景中商品图片 有哪些难点需要去克服 扫物以图片作为媒介 聚合微信内部有价值的生态内容如电商 百科 资讯进行展示 会催生哪些新的落地场景 本文将细
  • C++编程积累——C++实现十进制与二进制之间的互相转换

    欢迎关注原创公众号 计算机视觉联盟 回复 西瓜书手推笔记 可获取我的机器学习纯手推笔记 直达笔记地址 机器学习手推笔记 GitHub地址 目录 十进制与二进制之间的转换 十进制转换二进制 C 实现十进制转换二进制 二进制转换十进制 C 实现
  • 软件授权与加密技术简单原理

    2019 11 05 当前趋势下 互联网公司一般对外提供服务 而非直接出售软件 所以 大家不怎么关心软件授权 加密 但是 一些工业的软件拥有很核心的算法及技术专利 对外发布时 需要保护好程序 一般有如下要求 不能让未被授权的第三方未经授权而
  • ChatGPT 是什么,有什么作用,跟搜索引擎有什么区别?

    一 ChatGPT 是什么 ChatGPT 是一种自然语言生成的聊天机器人模型 由OpenAI开发 它能够根据用户输入的文本内容 自动生成新的文本内容 它的名称来源于它所使用的技术 GPT 3 架构 即生成式语言模型的第 3 代 当用户在人
  • 基数排序(利用了计数排序):时间复杂度为O(n)、有稳定性

    1 原理 对于数组中所有的元素 利用元素每一位的值进行排序 如十进制元素数组 342 254 87 则先对个位排序 再对十位排序 最后对百位排序 由于十进制每一位范围为0 9 因此按位排序的过程调用计数排序 示意图图下 2 伪代码 假设n个
  • 前端实现西瓜,抖音视频上传,视频帧选取封面功能

    使用纯html css js实现西瓜 抖音视频上传 视频帧选取封面功能 只做了功能 部分优化可以自行修改 效果图片预览 效果视频预览 仿西瓜 抖音视频上传封面图功能 完整代码
  • Java技术之AQS详解

    AbstractQueuedSynchronizer 简写为AQS 抽象队列同步器 它是一个用于构建锁和同步器的框架 许多同步器都可以通过AQS很容易并且高效的构造出来 以下都是通过AQS构造出来的 ReentrantLock Reentr
  • MATLAB NAN或INF无效点去除 (14)

    MATLAB NAN或INF无效点去除 14 一 算法介绍 二 算法实现 1 代码 含注释说明 2 效果 无效点去除前后点坐标展示 一 算法介绍 仅就一般情况来说 激光点云受到测量影响 可能会产生无效点 即坐标值为NAN或者INF等 这种点
  • 解决npm install安装node-sass包容易失败的问题 (Error: Cannot find module ‘node-sass‘)

    解决npm install安装node sass包容易失败的问题 Error Cannot find module node sass 问题与原因 解决方法一 手动下载binding node文件 解决方法二 设置环境变量安装 解决方法三
  • M1-Mac Qt5 CMakeLists.txt

    Project Config Begin cmake minimum required VERSION 3 17 project untitled CXX set CMAKE CXX STANDARD REQUIRED ON set CMA
  • Python3.5 中plt无法画出图像

    第一 sudo apt get install tk dev 正在读取状态信息 完成 将会同时安装下列软件 libfontconfig1 dev libfreetype6 dev libice dev libpng12 dev libpth
  • python 日期/时间模块

    文章目录 1 python中datetime模块中strftime strptime函数 2 str date以及datetime之间的相互转化 2 1 date和datetime以及time的区别和介绍 2 2 相互转化 3 实例 3 1
  • eclipse导入SpringBoot项目

    有时候会拿到别人现成的 springboot 项目 而不是从头自己做一个 这个时候 就需要用导入的方式来 import 这么一个项目了 本教程讲解如何用 eclipse 来导入 Eclipse 导入Springboot 项目办法 1 菜单
  • spring源码--05--IOC原理--FileSystemXmlApplicationContext(IOC容器)的初始化(细)

    spring 05 IOC原理 FileSystemXmlApplicationContext IOC容器 的初始化 细 1 验证过程 代码地址 https gitee com DanShenGuiZu learnDemo tree mas
  • Pseudoprime numbers(快速幂模板题)

    Fermat s theorem states that for any prime number p and for any integer a gt 1 ap a mod p That is if we raise a to the p