永发信息网

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

答案:4  悬赏:0  手机版
解决时间 2021-01-22 11:52
  • 提问者网友:姑娘长的好罪过
  • 2021-01-22 04:14
c语言求20到1000之间的亲密数程序
最佳答案
  • 五星知识达人网友:醉吻情书
  • 2021-01-22 05:44
#include
int main()
{
int a,i,b,n;
for(a=20;a<=1000;a++)
{
for(b=0,i=1;i<=a/2;i++)
if(!(a%i))b+=i;
for(n=0,i=1;i<=b/2;i++)
if(!(b%i))n+=i;
if(n==a&&a}
}
全部回答
  • 1楼网友:拜訪者
  • 2021-01-22 08:08
按照亲密数的定义,要判断数a是否有亲密数,只要计算出a的全部因子的累加和为b,再计算b的全部因子的累加和为n,若a等于n则可判定a和b是亲密数。计算a的各因子的算法:用a依次对i(i=1~a/2)进行模运算,若结果等于0,则i为a的一个因子;否则i就不是a的因子。
#include
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 == a && a < b)
printf("%d..%d", a, b); //若n=a,则a和b是一对亲密数,输出

}
printf("\n");
}
  • 2楼网友:梦中风几里
  • 2021-01-22 07:18
20到1000间的亲密数只有220和284.你没有理解亲密数的意思吧.a和b是亲密数对,a的因子和等于b,b的因子和等于a,因子不包括本身,a不等于b.算法重写吧,希望对你有帮助.
  • 3楼网友:酒安江南
  • 2021-01-22 07:12
#include
int ys(int n);
void main()
{
int i,b;
for(i=0;i<10000;i++)
{
b=ys(i);
if(i==ys(b) && iprintf("%-4d with %-4d\n",i,b);
}
}
int ys(int n)
{
int i,arr[12]={0},j=0,sum=0;
for(i=1;iif(n%i==0)
sum=sum+i;
return sum;
}
我自己跑过的,没问题~~
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯