因子分解是小学二年级就会的基本功,我总觉得它小儿科,但是并不是那么简单,因为我的这是升级版。原版只要揪出因子而不计数量,那就与事实不符,比如256=2。
长话短说,这是乘方格式的
代码如下
///<summary>因子分解</summary>
public string Factor_Pow(ulong x){ulong y=x;
List<ulong> su4=new List<ulong>();//用作被除的素数
List<ulong> ao=new List<ulong>();
ulong[,]exp=new ulong[0,0];string daan="";
if(x==0 || x==1)
return $"{x}";
else{
for(ulong j=2;j<x-1;j++){
while(y%j==0){
su4.Add(j);
y/=j;
if(y==1)break;
} } }
for(int r=0;r<su4.Count;r++){
if(r==0){
ao.Add(su4[r]);
}else{
if(su4[r]!=su4[r-1])ao.Add(su4[r]);
else continue;
} }
exp=new ulong[ao.Count,2];
for(int w=0,t=0;w<su4.Count;w++){
if(w==0){
exp[w,0]=ao[w];exp[w,1]=1;
}else{
if(su4[w]==su4[w-1])exp[t,1]++;
else{
t++;exp[t,0]=su4[w];exp[t,1]++;
} } }
for(int u=0;u<ao.Count;u++){
if(u==0)daan+=string.Format("{0}{1}",exp[u,0],new StriTo().StrToSuperscript($"{exp[u,1]}"));
else daan+=string.Format("\xd7{0}{1}",exp[u,0],new StriTo().StrToSuperscript($"{exp[u,1]}"));
}
return daan;
}
不用乘方型,就没有exp
和ao
,直接su4
循环加就行了。