0

我正在做一个练习,我必须在两个给定整数之间找到 K 素数(具有 K 个不同素因子的数字)。我已经编写了解决方案,但是我遇到了分段错误,我已经确定了我遇到分段错误的位置

table[prime_factor_nos[i]][i]++;

我用 N(1e5 + 2) 创建了一个大小为 6 的全局二维数组。但是,当我将 N 减少到 1e4 时,它按预期工作。现在我只知道不正确的索引并没有给这个问题带来更多的记忆。我也尝试在循环时打印值,段错误发生在这个值

cout<<"i :"<<i<<" pf[i] "<<prime_factor_nos[i]<<" "<<table[prime_factor_nos[i]][i]<<nl

Seg 故障发生在 i = 30015

最后输出:

i :30014 pf[i] 3 0
i :

这是内存问题吗?静态存储还不够吗?

代码

4

1 回答 1

1

对于 30030 和更多值,它的 prime_factor_nos[30030] = 6,这就是它导致运行时错误的原因。

于 2020-12-03T14:58:42.437 回答