您的位置:老铁SEO > 站长新闻 > 网站技术 >

在线因子分解素因子软件_因子分解计算器的在线使用

文章来源:新浪

作者:seo技术

人气:19

2021-11-04 10:15:16

一、特点:可以分解任意超大数。

二、运算结果显示:(数组的一个单元用于存储4位整数)。

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

第三,用C语言编程如下:

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

# include estio . h//I/O头函数。

#include string.h //字符串头函数。

#include math.h //math header函数。

#include time.h //datetime标头函数。

#定义N 50 //阵列大小。

main()

{无符号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 z[50]={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};//预存质数z小于231(因为231=3*7*11)。

char BC[N];//股息字符串bc

//输入和转换:

Printf("请连续输入分解数:");get(BC);

float t0=clock();//计时开始。

lbz=strlen(BC)-1;I=lb=lbz/4 1;//求计数数:总位数lbz,单位数lb。

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

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

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

}

//开始分解:

lbzprintf("=1 ");

while (lcz=lbz)

{ lc2=lcz * 2-1;//2倍除数数字lc2。

//a .未完成,继续分解:

if(lc2lbz||(lc2==lbzc3=q))

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

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

否则如果(b[lb]=100){ lbz ;b5=b[lb]* 100 b[lb1]/100;}

否则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=磅;x){ y[x]=b[x];}//C .开始做除法:

for(I=lb;i=lcI )

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

而(y[i]c[lc])

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

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

if(ss==0)ss=1;

jw=0;s[I]=ss;

for(k=1;k=lc1k)

{ XJ=c[k]* ss jw;

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

l=k I-LC;

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

y[l]-=XJ;

}

XJ=c[LC]* ss jw;

y[I]-=XJ;

}

}

而(y [LC]=c [LC])//D .判断除法是否结束:

{ for(x=LC;x=1;x )

{ if(y[x]c[x])break;//1.如果余数很大,再减去一次。

if(y[x]c[x])转到TC;//2.如果余数很小,请退出除法。

}

s[LC];//3.余数=除数,再减去。

for(x=1;x=lc1十)

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

y[x]-=c[x];

}

y[LC]-=c[LC];

}

tc:

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

对于(x=lcx=1;x )

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

if(x!=0) //1.余数!=0,找到一个新的除数:

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

{ c[1]=2;g;

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

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

{ g;c[1]=2;}

}

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

如果(c[1]=10000) //(3)除数单位:

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

for(x=2;x=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;}

否则if(c[LC]=100){ lcz ;C3=c[LC];}

否则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 ",c[LC]);//1)输出系数:

for(x=lc1;x=1;x ) printf(" d",c[x ");

对于(x=lcx=lb1X) //2)处理器进位:

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

}

if(s[lb]==0)lb ;//3)化商为红利:

对于(x=lcx=磅;x){ b[x-lc1]=s[x];}

l B-=lc1;

}

}

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

其他

{ printf("*%d ",b[lb]);//输出第一个单位。

for(x=lb1;x=1;x ) printf(" d",b[x ");//输出剩余的单元(每4位为1个单元,少于4位之前用0填充)。

打破;

}

}

Printf ("n耗时. 6f秒",(clock()-t0)/1000);//输出运行时间。

返回0;

}

上一篇:桌面硬盘大小_机械硬盘与固态硬盘比较

下一篇:没有了

相关文章

在线客服

外链咨询

扫码加我微信

微信:juxia_com

返回顶部