You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C++如何先打印数字的因数总数再输出所有因数,附现有代码求修改

代码修改思路

你当前的代码逻辑是遍历过程中遇到因数就直接打印,同时累计计数,所以输出顺序必然是因数在前、总数在后。要调换输出顺序,核心是先拿到因数总个数,再打印所有因数,有两种常用实现方案:


方案1:单次遍历+存储因数(仅遍历1次,效率更高)

用容器存储所有找到的因数,遍历完成后先输出容器长度(即因数总数),再遍历容器打印所有因数:

#include<iostream>
#include<vector>
using namespace std;

int main(){
    int N,i;
    vector<int> factors;
    cin>>N;

    for(i=1;i<=N;i++){
        if(N%i==0){
            factors.push_back(i);
        }
    }
    // 先输出因数总数
    cout<<factors.size()<<endl;
    // 再输出所有因数
    for(int j=0;j<factors.size();j++){
        cout<<factors[j]<<" ";
    }
    return 0;
}

方案2:两次遍历(无需额外存储空间,适合小数值场景)

第一次遍历只统计因数总数不做输出,打印总数后第二次遍历再打印所有因数:

#include<iostream>
using namespace std;

int main(){
    int N,i;
    int count=0;
    cin>>N;

    // 第一次遍历统计因数总数
    for(i=1;i<=N;i++){
        if(N%i==0){
            count++;
        }
    }
    // 先输出因数总数
    cout<<count<<endl;
    // 第二次遍历输出所有因数
    for(i=1;i<=N;i++){
        if(N%i==0){
            cout<<i<<" ";
        }
    }
    return 0;
}

内容的提问来源于stack exchange,提问作者vikas

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.20 23:45:08