936241151 发表于 2020-11-10 20:06:22

pintia上的题目 ,求助

一个正整数如果恰好等于它的因子之和,这个数就称为“完数”。例如6的因子为1,2,3,而6=1+2+3,因此6是“完数”。编程序找出不大于N(N>=0)的所有完数。
#include<stdio.h>
int main(){
    int N,a,b,s=0;
    scanf("%d",&N);
    if(N<=0){
      printf("error data");
            exit(0);
                        }
    for(a=1;a<=N;a++){
            b=1;
                  while(b<a){
                    if(a%b==0){
                            s=s+b;
                        }
                        b=b+1;
                }
                if(a==s)
                printf("%5d",a);
        }
return 0;
}
为什么我这输入1000,输出的总是0,没有预期完数。

xieglt 发表于 2020-11-10 20:32:05


for(a=1;a<=N;a++)
{
            b=1;
            s=0;// s赋0
                  while(b<a){
                  if(a%b==0){
                            s=s+b;
                        }
                        b=b+1;
                }
                if(a==s)
                printf("%5d",a);
      }

936241151 发表于 2020-11-10 21:00:03

xieglt 发表于 2020-11-10 20:32


我怎么改一下,让他没有完数是输出none

xieglt 发表于 2020-11-10 21:10:58

本帖最后由 xieglt 于 2020-11-10 21:11 编辑

936241151 发表于 2020-11-10 21:00
我怎么改一下,让他没有完数是输出none

加个变量
intflag =0;
if(a==s)

flag++;
printf.....;


循环结束后判断flag是否等于0
页: [1]
查看完整版本: pintia上的题目 ,求助