?? 完數.c
字號:
/*編程找出1000之內的"完數".完數指:一個數如果恰好等于它的因子之和.
例如6=1+2+3 28=1+2+4+7+14 */
main()
{
static int k[10];
int i,j,n,s;
for(j=2;j<=1000;j++)
{
n=-1; s=j;
for(i=1;i<j;i++)
{
if(j%i==0)
{
n++;
s=s-i;
k[n]=i;
}
}
if(s==0)
{
printf("%d是一個完數,它的因子是",j);
for(i=0;i<n;i++)
printf("%d ,",j);
printf("%d\n",k[n]);
}
}
}
/*
設X為完數,它有m個因子(不包括自身)1,t1,t2,...tn((ti+1)>(ti))
當n=2k時,因為一個整數的因子總是成對出現的,所以有如下關系
t1*t2k=X,t2*t2k-2=X,。。。(1)
又有t1+t2+...+t2k=X (2)
t1*t2*...*t2k=X (3)
由(1)和(3)t2*...*t2k-2=1
又因為(ti+1)>(ti),知k=1,即1*t1*t2=1+t1+t2=X,解這個不定方程,知t1=2,t2=3為唯一解
當n=2k-1時,無解
*/
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -