当今计算机科学的一个重要的领域就是密码学。有些人甚至认为密码学是计算机科学中唯一重要的领域,没有密码学生命都没有意义。
  阿尔瓦罗就是这样的一个人,它正在设计一个为西班牙杂烩菜饭加密的步骤。他在加密算法中应用了一些非常大的素数。然而确认一个非常大的数是不是素数并不是那么简单。一个费时的方法是用比这个数的平方根小的所有素数去除它,对于大整数来说,这样一定会毁掉这个杂烩菜饭的。
  然而,一些很有信心耗时少的随机测试存在,其中一个就是费马测试。
  在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

 
 
 
 

最新文章

  1. 配置iis时,浏览项目提示 无法识别的属性“targetFramework”。请注意属性名称区分大小写。
  2. yii2从零开始一,安装
  3. Linux命令中使用正则表达式
  4. SQL中的连接查询及其优化原则
  5. EditPlus使用心得及常用快捷键
  6. Machine Learning in Action -- AdaBoost
  7. qt 1 qt开发中的窗口设计
  8. jQuery.prop() 使用详解
  9. 基于visual Studio2013解决C语言竞赛题之1040因数分解
  10. Inno Setup入门(十三)&mdash;&mdash;Pascal脚本(2)
  11. Excel文件按照指定模板导入数据(用jxl.jar包)
  12. .NET Core开源快速开发框架Colder发布 (NET Core2.1+AdminLTE版)
  13. mysql 多列索引学习-经典实例
  14. 使用ThreadLocal来实现一个本地缓存
  15. android 开发 实现RecyclerView的列表单选功能
  16. python学习day5 常量 运算符补充 流程控制基础
  17. Microsoft Tech Summit 2017
  18. Jmeter如何保持cookie,让所有请求都能用同一个cookie,免去提取JSESSIONID
  19. UNIX历史
  20. param 是获取请求传递过来的参数

热门文章

  1. 数据库 left()、length()函数
  2. netty 的事件驱动
  3. JBPM4 学习笔记 转
  4. 分享10个免费或便宜的Photoshop替代工具
  5. [CF662C Binary Table][状压+FWT]
  6. JavaScript 自适应轮播图
  7. 修改testlink上传文件大小
  8. axios 跨域请求允许带cookie,则服务器Access-Control-Allow-Origin应设置为具体域名,否则请求无法获得返回数据
  9. 爬格子呀--IEEE极限编程大赛留念
  10. 0219 springmvc-拦截器和响应增强