求助!for循环改while循环
本帖最后由 生姜ZYX 于 2021-4-10 19:09 编辑为什么把for循环改成while循环就不对了呢?亲密数对问题
寻找n以内的亲密数对。如果a的所有正因子和等于b,b的所有正因子和等于a,因子包括1但不包括本身,且a不等于b,则称a,b为亲密数对。
#include <stdio.h>
int factorsum(int x){
int a=1,sum=0;
while(a<x)
{ if(x%a==0)
sum=sum+a;
a++;
}
return sum;
}
int main(){
int n,i=1,j,m;
scanf("%d",&n);
while(i<=n) {
m=factorsum(i);
for(j=i+1;j<=n;j++)
{
if(factorsum(j)==i&&m==j){
printf("%d<-->%d\n",i,j);}
}
i++;
}
}
题目没说啊 wp231957 发表于 2021-4-10 19:05
题目没说啊
说啥啊?就是把代码里的for循环改成while循环,我自己改怎么改也不对{:10_266:} wp231957 发表于 2021-4-10 19:05
题目没说啊
寻找n以内的亲密数对。如果a的所有正因子和等于b,b的所有正因子和等于a,因子包括1但不包括本身,且a不等于b,则称a,b为亲密数对。这是题目 {:10_250:}{:10_250:} 我突然会了 本帖最后由 肖-肖 于 2021-4-10 20:20 编辑
生姜ZYX 发表于 2021-4-10 19:47
我突然会了
你这代码有错吗?没错吧~ 肖-肖 发表于 2021-4-10 20:16
你这代码有错吗?没错吧~
这个代码没错,但我刚刚想把for改while不会改现在会了{:10_327:} 本帖最后由 肖-肖 于 2021-4-10 23:24 编辑
生姜ZYX 发表于 2021-4-10 23:14
这个代码没错,但我刚刚想把for改while不会改现在会了
嗯 我也改了下:
int main(){
int n,i=1,j,m;
scanf("%d",&n);
while(i<=n)
{
m=factorsum(i);
j=i+1;
while(j<=n)
{
if(factorsum(j)==i&&m==j)
{
printf("%d<-->%d\n",i,j);
}
j++;
}
i++;
}
return 0;
}
应该一样吧~{:10_248:}
其实应该加上:return 0;的!
还有就是设置下最佳答案吧~
页:
[1]