Carmichael Numbers (快速幂)
2024-09-06 20:43:53
当今计算机科学的一个重要的领域就是密码学。有些人甚至认为密码学是计算机科学中唯一重要的领域,没有密码学生命都没有意义。
阿尔瓦罗就是这样的一个人,它正在设计一个为西班牙杂烩菜饭加密的步骤。他在加密算法中应用了一些非常大的素数。然而确认一个非常大的数是不是素数并不是那么简单。一个费时的方法是用比这个数的平方根小的所有素数去除它,对于大整数来说,这样一定会毁掉这个杂烩菜饭的。
然而,一些很有信心耗时少的随机测试存在,其中一个就是费马测试。
在2和n-1之间随机选取一个数(n是我们要测试的数)。如果a n mod n = a 成立,n就可能是一个素数。
如果一个数通过费马测试很多次那么它就很可能是一个素数。
不幸的是,一些数不是素数但是它们依然能通过每一个比它小的数的费马测试。这些数被称作卡迈克尔数
这道题要求你写一个程序去测试给定的数是不是一个卡迈克尔数。
完成了这个任务的队伍有希望接受来自阿尔瓦罗的西班牙杂烩菜饭23333
多组输入,第一行给一个n (2 < n < 65000) 。n = 0 表示输入结束并不需要处理
对每组输入,输出它是不是卡迈克尔数,参考样例。
1729
17
561
1109
431
0
The number 1729 is a Carmichael number.
17 is normal.
The number 561 is a Carmichael number.
1109 is normal.
431 is normal.
#include<bits/stdc++.h>
using namespace std;
typedef long long ll; //尚不是特别大的数嘞!
//打表计算素数
int prime[65000];
void f()
{
prime[0]=prime[1]=0;
for(int i=2;i<65000;i++) prime[i]=1;
for(int i=2;i<65000;i++)
if(prime[i])
for(int j=2*i;j<65000;j+=i)
prime[j]=0;
} ll qmod(ll a,ll b,ll m)//计算a^b MOD m
{
ll ans=1;
while(b)
{
if(b&1) ans=(ans*a)%m;
b>>=1;
a=(a*a)%m;
}
return ans;
} int tests(int n)
{
for(int i=2;i<=n-1;i++)
if(qmod(i,n,n)!=i) return 0;//点睛巨笔!
return 1;
} int main()
{
f(); int n;
while(cin>>n&&n)
{
if(!prime[n] && tests(n))
cout<<"The number "<<n<<" is a Carmichael number.\n";
else cout<<n<<" is normal.\n";
}
return 0;
}
附录:https://vjudge.net/contest/310908#problem/A
最新文章
- 配置iis时,浏览项目提示 无法识别的属性“targetFramework”。请注意属性名称区分大小写。
- yii2从零开始一,安装
- Linux命令中使用正则表达式
- SQL中的连接查询及其优化原则
- EditPlus使用心得及常用快捷键
- Machine Learning in Action -- AdaBoost
- qt 1 qt开发中的窗口设计
- jQuery.prop() 使用详解
- 基于visual Studio2013解决C语言竞赛题之1040因数分解
- Inno Setup入门(十三)&mdash;&mdash;Pascal脚本(2)
- Excel文件按照指定模板导入数据(用jxl.jar包)
- .NET Core开源快速开发框架Colder发布 (NET Core2.1+AdminLTE版)
- mysql 多列索引学习-经典实例
- 使用ThreadLocal来实现一个本地缓存
- android 开发 实现RecyclerView的列表单选功能
- python学习day5 常量 运算符补充 流程控制基础
- Microsoft Tech Summit 2017
- Jmeter如何保持cookie,让所有请求都能用同一个cookie,免去提取JSESSIONID
- UNIX历史
- param 是获取请求传递过来的参数
热门文章
- 数据库 left()、length()函数
- netty 的事件驱动
- JBPM4 学习笔记 转
- 分享10个免费或便宜的Photoshop替代工具
- [CF662C Binary Table][状压+FWT]
- JavaScript 自适应轮播图
- 修改testlink上传文件大小
- axios 跨域请求允许带cookie,则服务器Access-Control-Allow-Origin应设置为具体域名,否则请求无法获得返回数据
- 爬格子呀--IEEE极限编程大赛留念
- 0219 springmvc-拦截器和响应增强