#includestdio.h
昆山ssl適用于網(wǎng)站、小程序/APP、API接口等需要進行數(shù)據(jù)傳輸應(yīng)用場景,ssl證書未來市場廣闊!成為創(chuàng)新互聯(lián)公司的ssl證書銷售渠道,可以享受市場價格4-6折優(yōu)惠!如果有意向歡迎電話聯(lián)系或者加微信:18982081108(備注:SSL證書合作)期待與您的合作!
int main()
{
int factor(int x),a,b,i;
for(a=1;a=2000;a++)
{
b=factor(a);
if(bafactor(b)==a)
printf("%d--%d\n",a,b);
}
return 0;
}
int factor(int x)
{
int i,sum=0;
for(i=1;i=x/2;i++)
if(x%i==0)
sum=sum+i;
return (sum);
}
#includestdio.h
#define N 3000Yzh();
void main()
{
/*int a; scanf("%d",a); printf("%d",Yzh(a));*/
int a,b,i,j;
for(i=2;iN;i++)
{
a = Yzh(i);
for(j=2;jN;j++)
{
b = Yzh(j);
if(a==j b==i ij) //因為要小的數(shù)在前面所以應(yīng)該是小于
printf("(%d,%d)",i,j);
}
}
}
int Yzh(int x)
{
int n,sum=0;
for(n=1;n=x/2;n++)
{
if(x%n==0)
sum+=n;
}
return sum;//因為你在主函數(shù)中會用到因子的和這個值,所以你必須要把調(diào)用函數(shù)的值返回給主函數(shù)
}
這是我修改的你的代碼,輸出符合你的要求,不過3000以內(nèi)的親密數(shù)好像只有3對
#include
stdio.h
#include
conio.h
int
facsum(int
n)
{
int
sum=0;
for
(int
i=1;in;i++)
{
if(n%i==0)
sum+=i;
}
return
sum;
}
main()
{
for
(int
i=1;i=500;i++)
{
int
M1=facsum(i);
if
(facsum(M1)==ii=M1)
{
printf("%d和%d互為親密數(shù)\n",i,M1);
}
}
}
可以嗎?輸出要有文字說明,你可以自己改printf("%d和%d互為親密數(shù)\n",i,M1);這句話就行了。
大概看了一下,你判斷是否為因子的地方有問題,應(yīng)該用取余運算符號:%
用除號是不行的,呵呵。
另外,你把求一個數(shù)的因子和,寫成一個函數(shù),這樣的話,程序看起來更明了,你也不容易混亂。
求因子和的函數(shù)如下:
int?sumf(int?num)
{
int?i,sum?=?0;
for(i?=?1;i?=?num;?i?++)
{
if(num?%?i?==?0)
{
sum?+=?i;?
}???
}
return?sum;
}
不過你所說的因子是否包含了1和數(shù)本身?如果包含的話,我運行了一下,2到1000好像沒發(fā)現(xiàn)有滿足條件的。
如果不包含1和本身,倒是有幾個,全程序是這樣:
#include?stdio.h
#include?stdlib.h
int?main(void)
{???int?i;?
for(i?=?2;?i??1000;?i++)
{??????
//printf("%d--%d--%d\n",i,sumf(i),sumf(sumf(i)));
if(i?==?sumf(sumf(i)))
{
printf("%d????%d\n",i,sumf(i));
}????
}?
system("pause");
return?0;
}
int?sumf(int?num)
{
int?i,sum?=?0;
for(i?=?2;i??num;?i?++)
{
if(num?%?i?==?0)
{
sum?+=?i;?
}???
}
return?sum;
}
親密數(shù)對:兩正整數(shù)a、b,若a的所有包含1但不包含自身的因子和等于b,b的所有包含1但不包含自身的因子和又等于a,則稱a、b為一對親密數(shù)或一親密數(shù)對。 具體代碼如下: #include stdio.hint fun(int n)
{
int i,sum;
sum=1;
for(i=2;i=n/2;i++)
if (n%i==0) sum+=i;
return sum;
}void main()
{
int a,b,c;
for (a=2;a=1000;a++)
{
b=fun(a);
c=fun(b);
if (c==a)
printf("%5d%5d\n",a,b);
}
}
#includestdio.h
int main()
{
int a,b,n;
int facsum(int n,int *a,int *b);
printf("There are following friendly--numbers pair smaller than 500:\n");
for(a=1;a500;a++) /*窮舉500以內(nèi)的全部整數(shù)*/
{
n=facsum(n,a,b);
if(n==aa=b)
printf("%4dand%d\n",a,b); /*若n=a,則a和b是一對親密數(shù),輸出*/
}
}
int facsum(int n,int *a,int *b)
{
int i;
for(*b=0,i=1;i=*a/2;i++) /*計算數(shù)a的各因子,各因子之和存放于b*/
if(!(*a%i))
*b+=i; /*計算b的各因子,各因子之和存于n*/
for(n=0,i=1;i=*b/2;i++)
if(!(*b%i))
n+=i;
return n;
}
呵呵,樓主,你還是多看看函數(shù)的用法吧,先理清邏輯。