ImageVerifierCode 换一换
格式:DOCX , 页数:15 ,大小:19.10KB ,
资源ID:5664430      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/5664430.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(数论资料.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

数论资料.docx

1、数论资料(1) 欧拉函数最大公约数int gcd(int a,int b) return b?gcd(b,a%b):a;最小公倍数inline int lcm(int a,int b) return a/gcd(a,b)*b;/求1.n-1中与n互质的数的个数int eular(int n) int ret=1,i; for (i=2;i*i1) ret*=n-1; return ret;1.精度计算大数阶乘语法:int result=factorial(int n);参数:n:n 的阶乘返回值:阶乘结果的位数注意:本程序直接输出n!的结果,需要返回结果请保留long a需要 math.h源程

2、序:int factorial(int n)long a10000;int i,j,l,c,m=0,w; a0=1; for(i=1;i=n;i+) c=0; for(j=0;j0) m+;am=c; w=m*4+log10(am)+1;printf(n%ld,am); for(i=m-1;i=0;i-) printf(%4.4ld,ai);return w; 2.精度计算乘法(大数乘小数)语法:mult(char c,char t,int m);参数:c:被乘数,用字符串表示,位数不限t:结果,用字符串表示m:乘数,限定10以内返回值:null注意:需要 string.h源程序:void m

3、ult(char c,char t,int m)int i,l,k,flag,add=0;char s100;l=strlen(c);for (i=0;il;i+)sl-i-1=ci-0; for (i=0;i=10) si=k%10;add=k/10;flag=1; else si=k;flag=0;add=0;if (flag) l=i+1;si=add; else l=i;for (i=0;il;i+)tl-1-i=si+0;tl=0;3.精度计算乘法(大数乘大数)语法:mult(char a,char b,char s);参数:a:被乘数,用字符串表示,位数不限b:乘数,用字符串表示,

4、位数不限t:结果,用字符串表示返回值:null注意:空间复杂度为 o(n2)需要 string.h源程序:void mult(char a,char b,char s)int i,j,k=0,alen,blen,sum=0,res6565=0,flag=0;char result65;alen=strlen(a);blen=strlen(b); for (i=0;ialen;i+)for (j=0;j=0;i-)for (j=blen-1;j=0;j-) sum=sum+resi+blen-j-1j;resultk=sum%10;k=k+1;sum=sum/10;for (i=blen-2;i

5、=0;i-)for (j=0;j=i;j+) sum=sum+resi-jj;resultk=sum%10;k=k+1;sum=sum/10;if (sum!=0) resultk=sum;k=k+1;for (i=0;i=0;i-) si=resultk-1-i;sk=0;while(1)if (strlen(s)!=strlen(a)&s0=0) strcpy(s,s+1);elsebreak;4.精度计算加法语法:add(char a,char b,char s);参数:a:被乘数,用字符串表示,位数不限b:乘数,用字符串表示,位数不限t:结果,用字符串表示返回值:null注意:空间复杂

6、度为 o(n2)需要 string.h源程序:void add(char a,char b,char back)int i,j,k,up,x,y,z,l;char *c;if (strlen(a)strlen(b) l=strlen(a)+2; else l=strlen(b)+2;c=(char *) malloc(l*sizeof(char);i=strlen(a)-1;j=strlen(b)-1;k=0;up=0;while(i=0|j=0)if(i0) x=0;else x=ai;if(j9) up=1;z%=10;else up=0;ck+=z+0;i-;j-;if(up) ck+=

7、1;i=0;ck=0;for(k-=1;k=0;k-)backi+=ck;backi=0; 5.精度计算减法语法:sub(char s1,char s2,char t);参数:s1:被减数,用字符串表示,位数不限s2:减数,用字符串表示,位数不限t:结果,用字符串表示返回值:null注意:默认s1=s2,程序未处理负数情况需要 string.h源程序:void sub(char s1,char s2,char t)int i,l2,l1,k;l2=strlen(s2);l1=strlen(s1);tl1=0;l1-;for (i=l2-1;i=0;i-,l1-)if (s1l1-s2i=0)

8、tl1=s1l1-s2i+0;elsetl1=10+s1l1-s2i+0;s1l1-1=s1l1-1-1;k=l1;while(s1k=0) tl1=s1l1;l1-;loop:if (t0=0) l1=strlen(s1);for (i=0;il1-1;i+) ti=ti+1;tl1-1=0;goto loop;if (strlen(t)=0) t0=0;t1=0; 6.任意进制转换语法:conversion(char s1,char s2,long d1,long d2);参数:s:原进制数字,用字符串表示s2:转换结果,用字符串表示d1:原进制数d2:需要转换到的进制数返回值:null注

9、意:高于9的位数用大写AZ表示,216位进制通过验证源程序:void conversion(char s,char s2,long d1,long d2)long i,j,t,num;char c;num=0;for (i=0;si!=0;i+)if (si=0) t=si-0; else t=si-A+10;num=num*d1+t;i=0;while(1)t=num%d2;if (t=9) s2i=t+0; else s2i=t+A-10;num/=d2;if (num=0) break;i+;for (j=0;ji/2;j+)c=s2j;s2j=si-j;s2i-j=c;s2i+1=0;

10、8.组合序列语法:m_of_n(int m, int n1, int m1, int* a, int head)参数:m:组合数C的上参数n1:组合数C的下参数m1:组合数C的上参数,递归之用*a:1n的整数序列数组head:头指针返回值:null注意:*a需要自行产生初始调用时,m=m1、head=0调用例子:求C(m,n)序列:m_of_n(m,n,m,a,0);源程序:void m_of_n(int m, int n1, int m1, int* a, int head) int i,t; if(m1n1) return; if(m1=n1) for(i=0;im;i+) coutai

11、; / 输出序列 coutn; return; m_of_n(m,n1-1,m1,a,head); / 递归调用 t=ahead;ahead=an1-1+head;an1-1+head=t;m_of_n(m,n1-1,m1-1,a,head+1); / 再次递归调用 t=ahead;ahead=an1-1+head;an1-1+head=t; 素数表/用素数表判定素数,先调用initprimeint plist10000,pcount=0;int prime(int n) int i; if (n!=2&!(n%2)|(n!=3&!(n%3)|(n!=5&!(n%5)|(n!=7&!(n%7)

12、 return 0; for (i=0;plisti*plisti1;void initprime() int i; for (plistpcount+=2,i=3;i50000;i+) if (prime(i) plistpcount+=i;素数随机判定(miller_rabin)/miller rabin/判断自然数n是否为素数/time越高失败概率越低,一般取10到50#include #ifdef WIN32typedef _int64 i64;#elsetypedef long long i64;#endifint modular_exponent(int a,int b,int n

13、) /ab mod n int ret; for (;b;b=1,a=(int)(i64)a)*a%n) if (b&1) ret=(int)(i64)ret)*a%n; return ret;/ Carmicheal number: 561,41041,825265,321197185int miller_rabin(int n,int time=10) if (n=1|(n!=2&!(n%2)|(n!=3&!(n%3)|(n!=5&!(n%5)|(n!=7&!(n%7) return 0; while (time-) if (modular_exponent(rand()&0x7fff16

14、)+rand()&0x7fff+rand()&0x7fff)%(n-1)+1,n-1,n)!=1) return 0; return 1;矩阵乘法1. voidMultiply(inta100100,intb100100,intc100100) 2. 3. inti,j,k; 4. 5. for(i=0;irow_a;i+) 6. 7. for(j=0;jcolumn_b;j+) 8. 9. cij=0; 10. for(k=0;kcolumn_a;k+) 11. 12. cij+=aik*bkj; 13. 14. 15. 16. N皇后问题1. #include 2. #include 3.

15、 #include 4. usingnamespacestd; 5. 6. intmain() 7. 8. intn,temp=0; 9. cinn; 10. intf20; 11. if(n%6!=2&n%6!=3) 12. 13. if(n%2=0) 14. 15. for(inti=2;i=n;i+=2) 16. ftemp+=i; 17. for(inti=1;i=n-1;i+=2) 18. ftemp+=i; 19. 20. else21. 22. for(inti=2;i=n-1;i+=2) 23. ftemp+=i; 24. for(inti=1;i=n;i+=2) 25. ft

16、emp+=i; 26. 27. 28. else29. 30. intk=0; 31. if(n%2=0) 32. 33. k=n/2; 34. if(k%2=0) 35. 36. for(inti=k;i=n;i+=2) 37. ftemp+=i; 38. for(inti=2;i=k-2;i+=2) 39. ftemp+=i; 40. for(inti=k+3;i=n-1;i+=2) 41. ftemp+=i; 42. for(inti=1;i=k+1;i+=2) 43. ftemp+=i; 44. 45. else46. 47. for(inti=k;i=n-1;i+=2) 48. ft

17、emp+=i; 49. for(inti=1;i=k-2;i+=2) 50. ftemp+=i; 51. for(inti=k+3;i=n;i+=2) 52. ftemp+=i; 53. for(inti=2;i=k+1;i+=2) 54. ftemp+=i; 55. 56. 57. else58. 59. k=(n-1)/2; 60. if(k%2=0) 61. 62. for(inti=k;i=n-1;i+=2) 63. ftemp+=i; 64. for(inti=2;i=k-2;i+=2) 65. ftemp+=i; 66. for(inti=k+3;i=n-2;i+=2) 67. f

18、temp+=i; 68. for(inti=1;i=k+1;i+=2) 69. ftemp+=i; 70. ftemp+=n; 71. 72. else73. 74. for(inti=k;i=n-2;i+=2) 75. ftemp+=i; 76. for(inti=1;i=k-2;i+=2) 77. ftemp+=i; 78. for(inti=k+3;i=n-1;i+=2) 79. ftemp+=i; 80. for(inti=2;i=k+1;i+=2) 81. ftemp+=i; 82. ftemp+=n; 83. 84. 85. 86. 87. for(inti=0;in;i+) 88. couti+1fiendl; 89. return0; 90. 91. 大数幂模1. #include 2

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1