天天看點

c語言求一個數因數個數,【代碼】求一個數的因數和、求優化、順便也供新人參考算法...

該樓層疑似違規已被系統折疊 隐藏此樓檢視此樓

#include

#include

main()

{

int n,q,p,m,k=1,sum=0,s[99999]={2},t[99999];//n是輸入的數;q和p分别代表兩個數組的工作下标

scanf("%d",&n); //k是用來取小于n數的數組工作下标

for(int i=3;i<=n;i+=2) //去所有小于n的數,放進s數組中

{

int tag=0;

for(int j=2;!tag&&j

if(i%j==0)tag=1;

if(!tag)

{

s[k]=i;

k++;

}

}

int tag=0; //用來判斷n是否是質數

for(int j=2;!tag&&j

if(n%j==0)tag=1;

if(!tag)

{

t[0]=1; //如果是,則把1和它本身放進t數組中

t[1]=n;

p=2;

}

else //如果不是素數,則開始分解因數

{

q=0,p=0;

while(1)

{

if(!(n%s[q])||n==s[q]) //s數組的素數從小到大能被整除或就是數本身

{

t[p]=s[q]; //放進t數組

p++;

n/=s[q];

}

else q++; //直到不能被整除,移動s數組下标判斷下一個素數

if(!(s[q]))break;

}

}

for(m=0;m

printf("%d\n",sum);

}