c语言求20到1000之间的亲密数程序

来源:百度知道 编辑:UC知道 时间:2024/05/30 22:34:00
求20到1000之间的亲密数程序。我是个初学者,很多地方都不太会,自己编了一下,运行结果我看不懂,请问我哪里出错了,应该怎样改正呢?
谢谢大家了!
#include <stdio.h>
main(){
int a,b,i,j,s=0,k=0;
for(a=20;a<=1000;a++)
{for(i=2;i<=a;i++)
s=s+i;
b=s;
for(j=2;j<=b;j++)k=k+j;
if(k==a,a!=b)
printf("%d,%d\n\n",a,b);}
}
我知道a的因子和是b,b的因子和是a,因子不包含本身,且a不等于b。这个概念。
我怎么记得老师说,20到1000之间的亲密数有48和75这对呢?
可是我按照一楼的程序运行了以下,确实只有220和284.
已经迷糊了,我学中文的,数学已经忘的差不多了。。。
我就是按那个写的。。。不会写啊。。

#include<stdio.h>
int main()
{
int a,i,b,n;
for(a=20;a<=1000;a++) /*穷举1000以内的全部整数*/
{
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;
if(n==a&&a<b)printf("%4d..%4d ",a,b); /*若n=a,则a和b是一对亲密数,输出*/
}
}

按照亲密数的定义,要判断数a是否有亲密数,只要计算出a的全部因子的累加和为b,再计算b的全部因子的累加和为n,若a等于n则可判定a和b是亲密数。计算a的各因子的算法:用a依次对i(i=1~a/2)进行模运算,若结果等于0,则i为a的一个因子;否则i就不是a的因子。

#include<stdio.h>
int main()
{
int a, i, b, n;
printf("There are following friendly-numbers for 2000 to 4000\n");
for(a = 20; a <1000; a++) //举2000到4000以内的全部整数
{
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;
if(n ==