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);
}
} 展开
运行之后始终是: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);
}
} 展开
展开全部
#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);
}
}
源码只改了两行,改完了之后可以运行,但是每对数会打印两次
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);
}
}
源码只改了两行,改完了之后可以运行,但是每对数会打印两次
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询