c語言親密數
#include<stdio.h>
intcalcsum(intn)
{
inti,sum=0;
for(i=1;i<=n/2;i++)
{
if(n%i==0)
{
sum+=i;
}
}
returnsum;
}
intmain()
{
intlBound,uBound;
inti,j;
printf("請輸入lBound和uBound:");
scanf("%d%d",&lBound,&uBound);
for(i=lBound;i<=uBound;i++)
{
for(j=i+1;j<=uBound;j++)
{
if(calcsum(i)==j&&calcsum(j)==i)
printf("%d<->%d ",i,j);
}
}
return0;
}
❷ 【C語言訓練】親密數
#include<stdio.h>
#define N 3000Yzh();
void main()
{
/*int a; scanf("%d",&a); printf("%d",Yzh(a));*/
int a,b,i,j;
for(i=2;i<N;i++)
{
a = Yzh(i);
for(j=2;j<N;j++)
{
b = Yzh(j);
if(a==j && b==i && i<j) //因為要小的數在前面所以應該是小於
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;//因為你在主函數中會用到因子的和這個值,所以你必須要把調用函數的值返回給主函數
}
這是我修改的你的代碼,輸出符合你的要求,不過3000以內的親密數好像只有3對
❸ C語言 求親密數 問題。大神請進!
while(i<a)
{
i=i+1;
這樣當i=a-1時,會進入循環,然後i加1,變成了a,並參與了運算,因此會得出錯誤結果。
將以上代碼改為:(注意,第二個也要改)
while(++i<a)
{
//i=i+1;
應該就正確了。
❹ C語言求親密數 函數方法
#include<stdio.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;a<500;a++) /*窮舉500以內的全部整數*/
{
n=facsum(n,&a,&b);
if(n==a&&a<=b)
printf("%4dand%d\n",a,b); /*若n=a,則a和b是一對親密數,輸出*/
}
}
int facsum(int n,int *a,int *b)
{
int i;
for(*b=0,i=1;i<=*a/2;i++) /*計算數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;
}
呵呵,樓主,你還是多看看函數的用法吧,先理清邏輯。
❺ C語言編程 高手進 關於親密數
#include
<stdio.h>
#include
<conio.h>
int
facsum(int
n)
{
int
sum=0;
for
(int
i=1;i<n;i++)
{
if(n%i==0)
sum+=i;
}
return
sum;
}
main()
{
for
(int
i=1;i<=500;i++)
{
int
M1=facsum(i);
if
(facsum(M1)==i&&i<=M1)
{
printf("%d和%d互為親密數\n",i,M1);
}
}
}
可以嗎?輸出要有文字說明,你可以自己改printf("%d和%d互為親密數\n",i,M1);這句話就行了。
❻ c語言 求出親密數對
大概看了一下,你判斷是否為因子的地方有問題,應該用取余運算符號:%
用除號是不行的,呵呵。
另外,你把求一個數的因子和,寫成一個函數,這樣的話,程序看起來更明了,你也不容易混亂。
求因子和的函數如下:
intsumf(intnum)
{
inti,sum=0;
for(i=1;i<=num;i++)
{
if(num%i==0)
{
sum+=i;
}
}
returnsum;
}
不過你所說的因子是否包含了1和數本身?如果包含的話,我運行了一下,2到1000好像沒發現有滿足條件的。
如果不包含1和本身,倒是有幾個,全程序是這樣:
#include<stdio.h>
#include<stdlib.h>
intmain(void)
{inti;
for(i=2;i<1000;i++)
{
//printf("%d--%d--%d ",i,sumf(i),sumf(sumf(i)));
if(i==sumf(sumf(i)))
{
printf("%d%d ",i,sumf(i));
}
}
system("pause");
return0;
}
intsumf(intnum)
{
inti,sum=0;
for(i=2;i<num;i++)
{
if(num%i==0)
{
sum+=i;
}
}
returnsum;
}
❼ 如何用C語言編寫2——1000之內的親密數對
親密數對:兩正整數a、b,若a的所有包含1但不包含自身的因子和等於b,b的所有包含1但不包含自身的因子和又等於a,則稱a、b為一對親密數或一親密數對。
具體代碼如下:
#include
int
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);
}
}
❽ c語言求親密對數
#include<stdio.h>
int main()
{
int factor(int x),a,b,i;
for(a=1;a<=2000;a++)
{
b=factor(a);
if(b>a&&factor(b)==a)
printf("%d<-->%d ",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);
}
❾ 如何用C語言編寫2——1000之內的親密數對
親密數對:兩正整數a、b,若a的所有包含1但不包含自身的因子和等於b,b的所有包含1但不包含自身的因子和又等於a,則稱a、b為一對親密數或一親密數對。 具體代碼如下: #include <stdio.h>int 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);
}
}