刚学C 语言的循环程序,不太懂

一个数如果恰好等于它的因子之和,这个数就称为完数。例如,6的因子为1,2,3,且6=1+2+3,因此6是完数。

输入
一个正整数n

输出

判断n是否为完数。如果是,则输出Yes和它的所有因子;否则,输出No

#include<stdio.h>
using namespace std;
int main() {
    int n,s=0;
    scanf("%d",&n);
    for(int i=1; i<n; i++) 
        if(n%i==0)    s+=i;
    if(s==n) {
        for(int i=1; i<n; i++) 
            if(n%i==0)     printf("%d ",i);
      }else printf("no");
    return 0;
}

觉得有用的话采纳一下哈

#include <iostream>
using namespace std;

bool isW(int n)
{
    long long sum = 0;
    for(int i = 1;i < n;i++)
    {
        if(n % i == 0) sum += i;
    }
   return sum == n;//这里返回的是一个布尔值,为true则是。
}

int main()
{
   int n;
   cin >> n;
   if(!isW(n)) cout << "no";
   else 
   {
       cout << "yes" << endl;
       for(int i = 1;i < n;i++)
       {
           if(n % i == 0) cout << i << " ";
       }
   }
   return 0;
}

觉得有用的话请采纳吧,你的采纳是对这个学生党最大的帮助和鼓励!