网站大量收购独家精品文档,联系QQ:2885784924

算法代码大全.doc

  1. 1、本文档共33页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
算法代码大全

数论算法: 一.求两数的最大公约数 int gcd(int a,int b) { if(b==0) return a; else return gcd(b,a%b); } 二.分解质因数 void fjzys(int n)//将质因数储存在a[]数组中 不包括* {long n,i,j=0; a[j++]=1; for(i=2;i=n;i++) for(;n%i==0;n/=i) a[j++]=i; } 三.求质数表 #includefstream using namespace std; bool h[50002]={false}; int main(void) { h[0]=true; h[1]=true; h[2]=false; int j; ofstream f1(z.txt); for(int i=2;i50001;i++) { j=i+i; if(!h[i]) { while(j50001) { h[j]=true; j+=i; } } } f1int prime={; for(int i=0;i50001;i++) { if(!h[i]) f1i,; } f1};; } 高精度系列 零.通用: int lc,x[100],y[100]; void chartoint(char a[],char b[])//字符串数组转整型数组 { int la=strlen(a),lb=strlen(b); int i; if(lalb) lc=la; else lc=lb; for(i=0;ila;i++) x[la-i-1]=a[i]-48; for(i=0;ilb;i++) y[lb-i-1]=b[i]-48; } void print(int c[])//输出高精度计算结果 稍微一改即可变为输出在数组中 { for(int i=lc-1;i=0;i--) coutc[i]; } 一.高精度加法: void gjjf(int a[],int b[],int c[])//a[]与b[]所记录的数相加得到c[] lc为a b最长位数 { int m=0,i; for(i=0;ilc;i++) { c[i]=(a[i]+b[i]+m)%10; m=(a[i]+b[i]+m)/10; } if(m0) c[lc++]=1; } 二.高精度减法: void gj_f(int a[],int b[],int c[])//a,b已经倒置的被减数和减数数组c倒置输出结果 lc为a b最长位数 { int i; for (i=0;ilc;i++) { c[i]=c[i]+(a[i]-b[i]); if(c[i]0) //借位问题 {c[i]=c[i]+10; c[i+1]--;} } while (lc0c[lc-1]==0) lc--; } 三.高精度乘法: ①.高精度乘低精度 void gjcdj(int a[],int b,int c[])//a为高精度数,b为单精度,c为计算结果的倒置,!转化函数不再适用 { int i,j; for(i=0;i=lc;i++) c[i]=a[i]*b; for(j=0;jlc||a[j]10;j++) { c[j+1]=c[j+1]+c[j]/10; c[j]=c[j]%10; } while(c[lc-1]==0lc0) lc--; } ②.高精度阶乘(引申) void gjdjc(int n,int c[])//求n! c数组倒置储存结果 lc初始值为0 { int i,j; //循环计数变量 c[0]=1; for(i=2;i=n;i++,lc=j) //算阶乘 { for(j

文档评论(0)

xy88118 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档