- 1、本文档共4页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
计算代数与计算数论
大素数的生成
#include stdio.h
#include stdlib.h
//大素数的生成
int euild(int a,int b);
main()
{
int n,i,t,b;
printf(请输入一个奇数和安全系数(用逗号隔开):);
scanf(%d,%d,n,t);i=1;
b=rand()%(n-3)+2;
if(euild(b,n)==1)
{
for(;i=t;i++)
{
b=rand()%(n-3)+2;
if(euild(b^(n-1),n)!=1)
break; }}
if(it)
printf(该奇数很可能是一个素数!\n);
else
{printf(该奇数是不一个素数!\n它对%d不成立,b);}}
int euild(int a,int b)
{
int r[3],s[3],t[3],z,q;
if(ab){z=a;a=b;b=z;}
r[0]=a;r[1]=b;s[0]=1;s[1]=0;t[0]=0;t[1]=1;
do{
q=r[0]/r[1];s[2]=s[0]-q*s[1];t[2]=t[0]-q*t[1];r[2]=r[0]-q*r[1];
s[0]=s[1];s[1]=s[2];t[0]=t[1];t[1]=t[2];r[0]=r[1];
r[1]=r[2];
}
while(r[1]!=0);
return abs(r[0]);
}
模重复平方计算法
N=input(请输入指数n的值:);
b=input(请输入b的值:);
m=input(请输入m的值);
i=0;
while N0
i=i+1;
n(i)=mod(N,2);
N=fix(N/2);
end
if n(1)==0
a(1)=1;
else a(1)=mod(b,m);
end
b(2)=mod(b*b,m);
for j=2:1:i
if n(j)==0
a(j)=a(j-1);
else a(j)=mod(a(j-1)*b(j),m);
end
b(j+1)=mod(b(j)*b(j),m);
end
answer=a(j)
求两个数的最大公因数
#include stdio.h
main()
{
int r[3],s[3],t[3],a,b,z,q;
printf(请输入两个整数:);
scanf(%d,%d,a,b);
if(ab){z=a;a=b;b=z;}
r[0]=a;r[1]=b;s[0]=1;s[1]=0;t[0]=0;t[1]=1;
do{
q=r[0]/r[1];s[2]=s[0]-q*s[1];t[2]=t[0]-q*t[1];r[2]=r[0]-q*r[1];s[0]=s[1];s[1]=s[2];
t[0]=t[1];t[1]=t[2];r[0]=r[1];r[1]=r[2];
}
while(r[1]!=0);
printf(%d*%d+%d*%d=%d\n,s[0],a,t[0],b,r[0]);}
求一个奇素数的全部原根
p=input(请输入一个奇素数:);
%找出指数
w=factor(p-1);
q=(p-1)./w;
i=1;
while i~=length(q)
if q(i)==q(i+1)
q(i+1)=[];i=i-1;
end
i=i+1;
end
%找出一个元根
i=2;
while ip
for k=1:length(q)
if mochong(i,q(k),p)==1
break
end
end
if (k==length(q))(mochong(i,q(length(q)),p)~=1)
break
end
i=i+1;
end
%找出p-1的简化剩余系
k=1;
for j=1:1:p-1
if gcd(j,p-1)==1
qq(k)=j;
k=k+1;
end
end
disp(该素数的一个原根为:)
disp(i)
disp
文档评论(0)