首页 > 解决方案 > 在循环中使用模数会导致分段错误(核心转储)

问题描述

我正在编写一个程序来查找数字的因数。

我的逻辑是:if ((number % i) == 0)那么我们有一个因素。但是如果你附加的代码,它会编译没有错误,但会在程序中崩溃。

如果将模运算符替换为其他任何内容,则程序运行良好。那我做错了什么??

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

int main()
{
    int number;
    vector<int> factors; 
    cout << "enter a number: ";
    cin >> number;

    for (int i = 0; i < number; i++)
    {
        if ((number % i) == 0)
        {
            factors.push_back(i);
        }
    }

    // display results
    cout << "factors are: ";
    for (int i = 0; i < factors.size(); i++)
    {
        if (i < (factors.size()-1)) cout << factors[i] << ", ";
        if (i == (factors.size()-1)) cout << factors[i];
    }


    return 0;
}

标签: c++

解决方案


您在第一次循环迭代中除以零(当 i 为 0 时)。

让我从 1 开始。


推荐阅读