c++ - 素数分解问题中的信号 11
问题描述
显然我正在尝试访问尚未分配的内存地址。有人可以告诉我在哪里吗?(对 n 个给定数进行质因数分解的程序)
#include <iostream>
using namespace std;
void sieve(int n){
int primes[n + 1];
for(int i = 2; i <= n; i++){
primes[i] = i;
}
for(int i = 2; i <= n; i++){
if(primes[i] == i){
for(int j = i*i; j <= n; j += i){
if(primes[j] == j){
primes[j] = i;
}
}
}
}
while(n != 1){
cout << primes[n] << " ";
n /= primes[n];
}
cout << endl;
}
int main()
{
ios_base::sync_with_stdio(0);
cin.tie();
int n;
cin >> n;
for(int i = 0; i < n; i++){
int x;
cin >> x;
sieve(x);
}
}
解决方案
这个循环非常可疑:
while(n != 1){
cout << primes[n] << " ";
n /= primes[n];
}
你有多确定 n 不会变成 0?而且您还没有将 primes[0] 初始化为任何东西,因此它可以是任何随机值。在那一点上,n 变成了谁知道什么,你就在 la-la 的土地上。
推荐阅读
- javascript - 如何下载 node-red 中的 tar 文件?
- heroku - 如何在 Heroku 上运行 CloudFlare Argo 客户端(“cloudflared”)?
- java - Java中的HackerRank左旋转
- flutter - 当键盘出现时,我的整个小部件树会重建吗?
- php - 将特定的 MySQL 列从行提取中分离到 php 中的另一个数组中
- deep-learning - 暗网:./src/utils.c:325:错误:断言“0”失败(YOLO-v4)Google colab
- mysql - 在 Mysql 5.7 中解析 JSON 列数组数据
- mysql - mysql没有插入到自定义数据库表wordpress
- python - 如何迭代存储在列表和字典中的数组
- android - 如何避免使用 ReactNative 按下 android 上的按钮?