首页 > 解决方案 > 进程以状态 -1073741510 终止 - C++ 素数分解

问题描述

我正在编写一个数字的素数分解代码,但我无法运行我的程序,遇到进程终止状态为 -1073741510我是计算机科学的新手。请在下面找到我的代码:

PrimeFactorize 函数

int primeFactorize(int n) {
  if (isPrime(n)) {
    cout<<n;
  }

  for(int i = 2; i < sqrt(n); i++) {
    if(!isPrime(i))
        continue;
    while(n % i == 0) {
        cout<<i;
        n /= i;
    }
  }
}

isPrime 方法

bool isPrime(int n) {
  if (n <= 1) {
    return false;
  }
  for(int i = 2; i <= sqrt(n); i++) {
    if (n % i == 0)
        return false;
  }
  return true;
}

主要方法

int main() {
  cout<<primeFactorize(100);
  return 0;
}

标签: c++returnreturn-typefunction-definition

解决方案


你的功能

int primeFactorize(int n);

什么都不返回。因此这个说法

cout<<primeFactorize(100);

调用未定义的行为。

您应该通过以下方式更改函数声明

std::vector<int> primeFactorize(int n);

在函数中,而不是输出素数除数,您应该在向量中传递它们。例如

  for(int i = 2; i < sqrt(n); i++) {
    if( isPrime(i)) {
        while(n % i == 0) {
            v.push_back( i );
            n /= i;
        }
    }
  }

并且函数必须返回向量。

在 main 中,您可以输出获得的向量。


推荐阅读