C++ 列出给定数的素数除数

C++ 列出给定数的素数除数,c++,C++,我试图在一个交互式网站上解决一个问题,在用我的一些示例尝试代码后,它似乎可以工作,但是,如果我在网站上加载它,它会说有一个错误的答案,这使我认为有一个(或多个)情况下我的代码无法正确执行,但我似乎找不到这样的情况 问题是: 对于每个给定的正整数,按升序返回其素因子。输入的第一行(自然数)是我们要检查的数字数量。以下行中的数字大于2。对于每个数字(在一行中)返回该数字,分号及其素数按升序排列。每个除数只能出现一次 例如: 2 12 1024 应该回来 12: 2 3 1024: 2 我的

我试图在一个交互式网站上解决一个问题,在用我的一些示例尝试代码后,它似乎可以工作,但是,如果我在网站上加载它,它会说有一个错误的答案,这使我认为有一个(或多个)情况下我的代码无法正确执行,但我似乎找不到这样的情况

问题是:

对于每个给定的正整数,按升序返回其素因子。输入的第一行(自然数)是我们要检查的数字数量。以下行中的数字大于2。对于每个数字(在一行中)返回该数字,分号及其素数按升序排列。每个除数只能出现一次

例如:

 2
 12
 1024
应该回来

12: 2 3
1024: 2
<>我的C++代码:

#include <iostream>

using namespace std;

int prime_check(int n)
{
    for (int i = 2; i < n; i++)
    {
        if (n % i == 0)
        {
            return false;
        }
    }
    return true;
}

int main()
{
    int no_of_inputs;
    cin >> no_of_inputs;
    for (int i = 0; i < no_of_inputs; i++)
    {
        int val;
        cin >> val;
        cout << val<<": ";
        for (int i = 2; i < val; i++)
        {
            if (val% i == 0)
            {
                if (prime_check(i) == 1)
                {
                    cout << i<< " ";
                }
            }
        }
        cout << endl;
    }
}
#包括
使用名称空间std;
整数素数检查(整数n)
{
for(int i=2;i>无任何输入;
对于(int i=0;i<无输入;i++)
{
int-val;
cin>>val;

cout我建议您使用算法选择所有素数,并将素数除数分配给范围内的每个数字:

std::map<int, std::vector<int>> primeDiv;
bool noPrimes[MAXINTERGER] = {0};
void criba(){
    for(int i = 2; i <= MAXINTERGER; ++i)
        if(!noPrimes[i])
            for(int j = 2; i*j <= MAXINTERGER;j++){
                noPrimes[i*j] = true;
                primeDiv[i*j].push_back(i);
            }
}
std::map primeDiv;
bool-noPrimes[maxinteger]={0};
void criba(){

对于(int i=2;i调试器告诉你什么?正如@nicomp巧妙地建议的那样。找到代码失败的情况,逐行检查代码,查看输入,并注意预期发生的情况与每一步发生的情况-debug。你提供了一个冒号。它要求分号。不要依赖某个网站在你的代码中查找错误最终,你有责任测试你的代码并确保它是正确的。“错误答案”作为测试结果是无用的,你需要编写你自己的测试,在那里你可以检查你忘记用素数测试到底出了什么问题。