C++编程,求1000以内的完数并每行按格式输出其因子:6=1+2+3

输出格式要这样的。。。。

void is_Perfectnumber(int number) //判断完数并输出

{

    int i = 0;

    int j = 0;

    int sum = 0;

    int arr[100] = { 0 };//定义一个数组,存储因子

    for (i = 1; i <= number/2; i++) //判断完数

    {

        if (0 == number % i)

        {

            arr[j] = i;

            j++;

            sum = sum + i;

        }

    }

    if (number == sum)

    {

        printf("%3d its factors are ",sum);

        int k = 0;

        for (k = 0; k < j; k++)  //输出完数的各个因子

        {

            printf("%d ", arr[k]);

        }

        printf("\n");

    }

}

int main()

{

    int num = 0;

    for (num = 1; num <= 1000; num++)

    {

        is_Perfectnumber(num);

    }

    system("pause");

    return 0;

}

扩展资料:  

C++ 中的函数定义的一般形式如下:

return_type function_name( parameter list ){   body of the function}

在 C++ 中,函数由一个函数头和一个函数主体组成,下面列出一个函数的所有组成部分。

返回类型:一个函数可以返回一个值。return_type 是函数返回的值的数据类型。有些函数执行所需的操作而不返回值,在这种情况下,return_type 是关键字 void。

函数名称:这是函数的实际名称。函数名和参数列表一起构成了函数签名。

参数:参数就像是占位符。当函数被调用时,您向参数传递一个值,这个值被称为实际参数。参数列表包括函数参数的类型、顺序、数量。参数是可选的,也就是说,函数可能不包含参数。

函数主体:函数主体包含一组定义函数执行任务的语句。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2019-06-03

#include"stdafx.h"

#include&lt;stdio.h&gt;

int totalnum(int num)//返回所有约数的和

{

int sum=0;//记录所有约数的和

int i=0;

for(i=1;i&lt;=num/2;i++)

{

if(num%i==0)

{

sum+=i;

}

}

return sum;

}

int main()

{

int i=0;

int j=0;

for(i=2;i&lt;=1000;i++)

{

int k=totalnum(i);

if(i==k)

{

printf("%d\n",i);

}

}

return 0;

}

扩展资料:

其它方法:

public class wanshu{

public static void main(String[]args){

System.out.println("1000以内的素数有:");

for(int i=1;i&lt;=10000;i++){

int sum=0;

for(int j=1;j&lt;=i;j++){

if(i%j==0){

sum+=j;}

if(sum==i){

System.out.println(i);

break;}}

}

}

}

本回答被网友采纳
第2个回答  推荐于2017-12-16

#include <iostream>

using namespace std;

int main()

{

for(int i=1;i<=1000;i++)

{

int sum=0,a;

for(int j=1;j<i;j++)

if(i%j==0)

{

sum=sum+j;//假如找到一个因子就加起来

a=j;//for循环执行完后a就是最大的那个因子

}

if(sum==i)//判断因子之和与i是否相等

{

cout<<i<<"=";

for(int k=1;k<i;k++)

if(i%k==0)

{

cout<<k;

if(k!=a)

cout<<'+';//假如这个k不是最大的那个因子则输出+号

}

cout<<endl;//每输出完一个就换行

}

}

}

还有不懂可以问  

本回答被提问者采纳
第3个回答  2015-03-31
#include <stdio.h>
int main(){
int i, j, k, s, factor[100];
for(i=2; i<=1000; ++i){
s = k = 0;
for(j=1; j<i; ++j){
if(i%j==0){
s += j;
factor[k++] = j;
}
}
if(s!=i)continue;
printf("%d=%d", i, factor[0]);
for(j=1; j<k; ++j)
printf("+%d", factor[j]);
putchar('\n');
}
return 0;
}

相似回答