c语言表达求因子有1 2 4

求:输入8 输出 8的因子有: 1 2 4
这好难啊,怎么输出1 2 4不重复

可采纳


#include<stdio.h>
int main()
{
    int i,a;
    scanf("%d",&a);
    for(i=1;i<a;i++)
    {
        if(a%i==0)
            printf("%d ",i);
    }
    return 0;
}
#include <stdio.h>
#define N 10 // 因子最大个数
int main() 
{
    int num = 8;
    int factors[N] = {0}; // 存储不重复的因子
    int count = 0; // 记录不重复因子的个数

    for (int i = 1; i <= num; i++) {
        if (num % i == 0) {
            // 判断i是否已经在数组中出现过
            int flag = 0;
            for (int j = 0; j < count; j++) {
                if (factors[j] == i) {
                    flag = 1;
                    break;
                }
            }
            // 如果i没有出现过,则将其添加到数组中
            if (!flag) {
                factors[count++] = i;
            }
        }
    }

    printf("%d的因子有:", num);
    for (int i = 0; i < count; i++) {
        printf("%d ", factors[i]);
    }
    printf("\n");

    return 0;
}

#include <iostream>
#include <vector>
#include <unordered_set>

std::vector<int> findFactors(int num) {
    std::vector<int> factors;
    std::unordered_set<int> uniqueFactors;

    for (int i = 1; i <= num; ++i) {
        if (num % i == 0) {
            factors.push_back(i);
            uniqueFactors.insert(i);
        }
    }

    return factors;
}

int main() {
    int num;
    std::cout << "Enter a number: ";
    std::cin >> num;

    std::vector<int> factors = findFactors(num);

    std::cout << num << "'s factors are: ";
    for (int factor : factors) {
        if (uniqueFactors.count(factor) == 1) {
            std::cout << factor << " ";
        }
    }
    std::cout << std::endl;

    return 0;
}