大概看了一下,你判断是否为因子的地方有问题,应该用取余运算符号:%
用除号是不行的,呵呵。
另外,你把求一个数的因子和,写成一个函数,这样的话,程序看起来更明了,你也不容易混乱。
求因子和的函数如下:
int sumf(int num){
int i,sum = 0
for(i = 1i <= num i ++)
{
if(num % i == 敬迅0)
{
sum += i
}
}
return sum
}
不过你所说的因子是否包含了1和数本身?如果包含的话,我运行了一下,2到1000好像没丛团发现有满足条件的。
如果不包含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 = 2i < num i ++)
{
if(num % i == 0)
{
sum += i
渗稿橘 }
}
return sum
}
#include<尺世stdio.h>陵盯肢则逗
int main()
{
int factor(int x),a,b,i
for(a=1a<=2000a++)
{
b=factor(a)
if(b>a&&factor(b)==a)
printf("%d<-->%d\n",a,b)
}
return 0
}
int factor(int x)
{
int i,sum=0
for(i=1i<=x/2i++)
if(x%i==0)
sum=sum+i
return (sum)
}
亲密数对:两正整数a、b,若a的厅首所有包含1但不包含自身的因子和等于b,b的所有包含谨州1但不包含自身的因祥伏蔽子和又等于a,则称a、b为一对亲密数或一亲密数对。具体代码如下:
#include
int
fun(int
n)
{
int
i,sum
sum=1
for(i=2i<=n/2i++)
if
(n%i==0)
sum+=i
return
sum
}void
main()
{
int
a,b,c
for
(a=2a<=1000a++)
{
b=fun(a)
c=fun(b)
if
(c==a)
printf("%5d%5d\n",a,b)
}
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)