c语言一道题

题目是:通过编程在6~5000内找出所有的亲密数对。说明:若a、b为1对亲密数。则a的因子和等于b,b的因子和等于a,且a不等于b。例如,220、284是1对亲密数。运行... 题目是:通过编程在6~5000内找出所有的亲密数对。说明:若a、b为1对亲密数。则a的因子和等于b,b的因子和等于a,且a不等于b。例如,220、284是1对亲密数。

运行之后始终是:press any key to continue

求大神帮我找下错,只学过几个简单的循环语句,勿喷T T

#include<stdio.h>
void main()
{
int i,j,s,h;
s=0;
h=0;
for(i=6;i<=5000;i++)
{
for(j=1;j<=i;j++)
{if(i%j==0)
s=s+i/j;
else s=s;}
if(6<=s&&s<=5000)
{
for(j=1;j<=s;j++)
{if(s%j==0)
h=h+s/j;
else h=h;}
}
if(i==h)
if(s!=i)
printf("%d,%d",s,i);
}
}
展开
 我来答
田真久
2014-03-20 · TA获得超过661个赞
知道小有建树答主
回答量:603
采纳率:100%
帮助的人:323万
展开全部
#include <ctype.h>
#include <stdio.h>
int main()
{
   
    int i,j,l,sum1,sum2;
    for(i=6;i<5000;i++)
    {
         
        //计算第一个数的所有因子和
              sum1=0;
             for(l=1;l<i;l++)
            if(i%l==0)
               sum1+=l;
            //如果是超多了范围 就直接下一次循环
            if(sum1<6&&sum1>5000||i==sum1)
                continue;

            sum2=0;
       //计算第二个数的所有因子和
for(j=1;j<sum1;j++)
{
if(sum1%j==0)
                   sum2+=j;

}

if(sum2==i)
printf("%d\t%d\n",i,sum1);
      
     
    }
     
    return 0;
 
}
追问
其实我是想知道我的为什么错
匿名用户
2014-03-20
展开全部
#include<stdio.h>
void main()
{
int i,j,s,h;
//s=0,h=0;
for(i=6;i<=5000;i++)
{
s=0;h=0;//在循环里面s和h应该重新归零

for(j=1;j<=i;j++)
{if(i%j==0)
s=s+i/j;
else s=s;}
if(6<=s&&s<=5000)
{
for(j=1;j<=s;j++)
{if(s%j==0)
h=h+s/j;
else h=h;}
}
if(i==h)
if(s!=i)
printf("%d,%d",s,i);
}
}
源码只改了两行,改完了之后可以运行,但是每对数会打印两次
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式