在线分解质因数软件 因式分解计算器在线使用方法

1.特点:可以分解任意超级大数。2.运算结果显示:(用数组的一个单元存储4位整数)三。用C语言编程如下://超大号4的分解(每个单元格存储4位整数)# include & ltstdio.h & gt//I/O头函数# include & ltstring.h & gt//字符串头函数# include & lt***th.h & gt//数学头函数# includ...

1.特点:可以分解任意超级大数。

2.运算结果显示:(用数组的一个单元存储4位整数)

三。用C语言编程如下:

//超大号4的分解(每个单元格存储4位整数)

# include & ltstdio.h & gt//I/O头函数

# include & ltstring.h & gt//字符串头函数

# include & lt***th.h & gt//数学头函数

# include & lttime.h & gt//日期时间头函数

#定义N ^ 50//数组大小

主()

{ unsigned bz[N*4]={},b[N]={},c[N]={0,2},s[N]={},y[N*2]={},XJ;//被除数B,除数C,商S,余数Y,新产品xj

int i,k,x,lbz,lb,lcz=1,LC = 1;//循环变量I,k,x;股息总位数lbz,单位数lb;除数lcz的总位数,单元数lc

int jw,ss,l,g=0,Jr = 0;//进位jw,试商ss,乘积的单位数l,质数g,输入指令Jr。

int lb1,lc1,lc2,b5,q,C3 = 2;//LB1 = LB-1,LC1 = LC-1,LC2 = LCZ * 2-1,被除数的前五位b5及其平方根Q,除数的前三位c3(这行所有变量都是为了提高运行速度)

int zl = k+I-LC;={2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,

73,79,83,89,97,101,103,107,109,113,127,131,137,139,149,151,157,163,167,

173,179,181,191,193,197,199,211,223,227,229};//预存小于231的质数Z(因为231=3*7*11)

char BC[N];//红利字符串bc

//输入和转换:

printf(“请连续输入分解后的数字:”);gets(BC);

浮点t0 = clock();//计时开始

lbz = strlen(BC)-1;I = lb = lbz/4+1;//找到要计数的数字:总位数lbz,单位数lb

for(x = lbz;x & gt=0;x & # 8211)//通过算术字符串转换为整数

{ b[I]= b[I]* 10+BC[lbz-x]-48;

if(x % 4 = = 0){ I –;}//每单元存储4位整数

}

//开始分解:

lbz++;printf(”= 1″);

while(lcz <=lbz)

{ lc2 = lcz * 2-1;//除数位数lc2的两倍

//a .如果没有完全分解,继续分解:

if(lc2 <lbz | |(lc2 = = lbz && ampc3 & lt=q))

{ lbz = lb * 4;lb1 = l B- 1;b5 = b[lb]* 10000+b[lb1];//a .求被除数的总位数lbz及其前五位b5:

if(b[lb]>= 1000){ b5 = b[lb]* 10+b[lb1]/1000;}

else if(b[lb]>= 100){ lbz –;b5 = b[lb]* 100+b[lb1]/100;}

else if(b[lb]>= 10){ lbz-= 2;b5 = b[lb]* 1000+b[lb1]/10;}

else { lbz-= 3;b5 = b[lb]* 10000+b[lb1];}

q = sqrt(b5+1);lc1 = LC-1;//b .求被除数前5位的算术根Q

for(x = 1;x & lt= lbx++){ y[x]= b[x];}//c .开始做除法:

for(I = lb;我& gt= lc我–)

{ y[I]+= y[I+1]* 10000;y[I+1]= 0;s[I]= 0;

while(y[I]>c[lc]

{ if(y[I]>= 214748)ss = y[I]/(c[LC]+1);

else ss =(y[I]* 10000+y[I-1]/(c[LC]* 10000+c[lc1]+1);

if(ss = = 0)ss = 1;

jw = 0;s[I]+= ss;

for(k = 1;k & lt= lc1k++)

{ XJ = c[k]* ss+jw;

if(XJ <= 9999)jw = 0;else { jw = XJ/10000;xj % = 10000}

[50]

if(y[l]<XJ){ y[l]+= 10000;y[l+1]–;}

y[l]-= XJ;

}

XJ = c[LC]* ss+jw;

y[I]-= XJ;

}

}

while(y[LC]>= C [LC])//d .判断除法是否完成:

{ for(x = LC;x & gt=1;x & # 8211)

{ if(y[x]>c[x])break;//1.再次减去余数。

if(y[x]<c[x])goto TC;//2.以小余数退出除法

}

s[LC]++;//3.余数>:=除数,再减去它

for(x = 1;x & lt= lc1x++)

{ if(y[x]<c[x]){ y[x]+= 10000;y[x+1]–;}

y[x]-= c[x];

}

y[LC]-= c[LC];

}

tc:

//e .判断余数是否为0:

for(x = LC;x & gt=1;x & # 8211)

{ if(y[x]!=0)断开;}

如果(x!=0) // 1.余数!= 0,求新除数:

{ if(jr!=0) // 1)如果除数超过预存质数数组的范围,则除数加2:

{ c[1]+= 2;g++;

if(g%231!=0) // (1)跳过3,5,7,11的倍数(因为231=3*7*11):

{ while((g % 3 = = 0 | | c[1]% 5 = = 0 | | g % 7 = = 0 | | g % 11 = = 0)= = 1)

{ g++;c[1]+= 2;}

}

else { g = 1;c[1]+= 2;} // (2)直接加2

if(c[1]>=10000) //(3)每个单位求除数:

{ c[2]++;c[1]-= 10000;

for(x = 2;x & lt= lcx++){ if(c[x]>= 10000){ c[x+1]++;c[x]-= 10000;} }

if(c[lc+1]>= 1)lc++;

lcz = LC * 4;lc1 = LC-1;//取除数c3的前3位:

if(c[lc]>= 1000){ C3 = c[LC]/10;}

else if(c[lc]>= 100){ lcz –;C3 = c[LC];}

else if(c[lc]>= 10){ lcz-= 2;C3 = c[LC]* 10+c[lc1]/1000;}

else { lcz-= 3;C3 = c[LC]* 100+c[lc1]/100;}

}

}

Else // 2)如果除数在预存素数的范围内,则直接读取:

{ c[1]= z[g];g++;

if(g = = 50){ Jr = 1;g = 1;c[1]= 233;}

lcz = log10(c[1])+1;//求除数位数lc,四舍五入。

}

}

// 2.当余数=0时:

其他

{ printf(“* % d & # 8221,c[LC]);// 1)输出因子:

for(x = lc1;x & gt=1;x & # 8211)printf(”% 04d & # 8221,c[x]);

for(x = LC;x & lt= lb1+x++) // 2)处理商进位:

{ if(s[x]>= 10000){ s[x+1]++;s[x]-= 10000;}

}

if(s[lb]= = 0)lb –;// 3)将商转化为被除数:

for(x = LC;x & lt= lbx++){ b[x-lc1]= s[x];}

lb-= lc1;

}

}

//b .分解后输出最终因子:

其他

{ printf(“* % d & # 8221,b[lb]);//输出头单元

for(x = lb1;x & gt=1;x & # 8211)printf(”% 04d & # 8221,b[x]);//输出剩余单位(每4位为1个单位,不足4位前加0)

打破;

}

}

printf(“n用了%.6f秒”,(clock()-t0)/1000);//输出运行时间

返回0;

}

本文来自一九九几的她投稿,不代表舒华文档立场,如若转载,请注明出处:https://www.chinashuhua.cn/24/598176.html

打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
() 0
上一篇 06-19
下一篇 06-19

相关推荐

评论列表

联系我们

在线咨询: QQ交谈

邮件:admin@qq.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信