解题思路:

定义一个数组存储因子,方便输出

第一个外循环:用于遍历6~输入的范围数

第一个内循环:用于得到因子并存储

第二个内循环:用于求因子之和

第三个内循环:用于判断因子之和是否与外循环里的初值相等,若相等按题目要求输出格式输出


注意事项:
数组元素的个数,由第一个外循环的循环初值的因子数目决定,需要在求因子时自增

后续的循环时,要将下标-1,因为多自增了一次会导致数组越界

满足条件时,因子数的输出之间有空格,且最后没有空格(利用if条件判断体,单独写一个输出语句)


参考代码:

#include <iostream>
using namespace std;
int main()
{
 int N,list[1000],sum,arr;
 cin>>N;
 for(int i=6;i<=N;i++)//第一个外循环
 {
  arr=0;
  sum=0;
  for(int j=1;j<=i/2;j++)//第一个内循环
  {
   if(i%j==0)
   {
    list[arr]=j;
    arr++;
   }
  }
  arr=arr-1;
  for(int k=0;k<=arr;k++)//第二个内循环
  {
   sum=sum+list[k];
  }
  if(sum==i)
  {
   cout<<i<<" "<<"its factors are ";
   for(int z=0;z<=arr;z++)//第三个内循环
   {
    cout<<list[z]<<" ";
   }
   cout<<endl;
  }
 }
 return 0;
}


点赞(0)
 

0.0分

15 人评分

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

评论列表 共有 3 条评论

忆昔 2月前 回复TA
#include<iostream>
using namespace std;
int main()
{
	int N, list[1000];
	cin >> N;
	for (int i = 1; i <= N; i++)
	{
		int x = 0,n=0;
		for (int k = 1; k < i; k++)
		{
			if (i % k == 0)
			{
				list[n] = k;
				n++;
				x += k;
			}
		}
		if (i == x)
		{
			cout << i << " " << "its factors are ";
			for (int j = 0; j < n; j++) cout << list[j] << " ";
			cout << endl;
		}
	}
	return 0;
}
锐锐 12月前 回复TA
#include <stdio.h>
#include <stdlib.h>


int main(void){
	int n,i,j;
	scanf("%d",&n);
	for(i = 1;i <= n;i++){
		int tem = 0;
		for(j = 1;j < i; j++){
			if(i%j==0){
				tem+=j;
			}
		}
		if(tem==i){
			printf("%d its factors are ",i);
			for(j = 1;j < i; j++){
				if(i%j==0){
					printf("%d ",j);
				}
			}
			printf("\n");
		}
	}
	return 0;
}
  26行,我的够多了,35行太多了
小白 1年前 回复TA
我跟你想的完全一模一样:
#include<bits/stdc++.h>
using namespace std;
int main()
{
    int a,sum=0;
    bool tr=0;
    vector<int> fac;
    cin>>a;
    for(int i=6;i<=a;i++)
    {
        for(int j=1;j<=i/2;j++)
        {
            if(i%j==0) 
            {
                sum+=j;
                fac.push_back(j);
            }
        }
        if(sum==i)
        {
            tr=1;
            cout<<i<<" its factors are ";
            for(int i=0;i<fac.size();i++)
            {
                cout<<fac[i]<<" ";
            }
            cout<<endl;
        }
        sum=0;
        fac.clear();
    }