信息安全数学基础基本算法代码案例.doc

求最大公因数及最小公倍数 #includeiostream?? using?namespace?std;?? int?main()?? {?? ?int?m,n,min,max;?? ?cout请输入两个正整数:endl;?? ?cinmn;?? ?{?? ?if(m=n){?? ??min=n;?? ?}else{?? ??min=m;?? ?}?? ?while(true){?? ??if(m%min==0n%min==0){?? ???cout最大公约数是:minendl;?? ???break;?? ??}?? ??min--;?? ?}?? ?}?? ?{?? ??if(m=n){?? ???max=m;?? ??}else{?? ???max=n;?? ??}?? ??while(true){?? ???if(max%m==0max%n==0){?? ????cout最小公倍数是:maxendl;?? ????break;?? ???}?? ???max++;?? ??}?? ?}?? }#include stdlib.h #include stdio.h #define N 101 char b[N]; int i,j,t,a,phi[N]={0,1,1}; int main() { for(i=2;iN;i++)if(!b[i]) for(j=2;i*jN;j++)b[i*j]=1;//筛素数puts(N\tphi(N)); for(i=2;iN;i++) {t=i; a=1; for(j=2;ji;j++)if(!b[j]t%j==0){//找质因数 t/=j; a*=j-1; } if(a==1)a=t-1; else a*=t; phi[i]=a; printf(%d\t%d\n,i,a); } return 0; } 快速指数算法 #includeiostream using namespace std; int Finger(int x,int a,int n) { int aa[20]; int i=0,num,temp=a; while(temp!=0) { num=temp%2; aa[i]=num; i++; temp=temp/2; } int y=1,j=0; do { y=(y*y)%n; if(aa[j]==1) y=(y*x)%n; j++; }while(ji+1); return y; } int main() { int x,a,n; cout输入x,a,n:endl; cinxan; coutx^amod n=Finger(x,a,n)endl; return 0; }

您可能关注的文档

文档评论(0)

1亿VIP精品文档

相关文档