请各位朋友帮忙看一下数组为什么要开这么大?
查看原帖
请各位朋友帮忙看一下数组为什么要开这么大?
324599
君子曰楼主2024/9/3 19:52

问题在a数组的大小上,这个数组的功能是存放10000以内所有的质数,质数的数量不超过1千5,开3000的大小绰绰有余。

但3千的大小却有两个RE,当数组开到8千时有一个WA,开到1万1的时候全AC掉。

麻烦有了解的朋友解惑一下,万分感谢。

#include <bits/stdc++.h>
using namespace std;

int main(){
	int a[11000]; //问题在这
	a[0] = 2;
	int c = 1; //质数的个数

	int bj; //标记,0不是质数,1是质数
	for(int i = 3; i <= 10000; i+=2){
		bj = 1;
		for(int j = 0; j < c; j++){
			if(i % a[j] == 0){
				bj = 0;
				break;
			}
		}
		if(bj == 1){
			a[c] = i;
			c++;
		}
	}

	int n;
	cin >> n;
	for(int i = 4; i <= n; i+=2){
		for(int j = 0, k = 0; j < i; ){
			if(a[j] + a[k] == i){
				cout << i << "=" << a[j] << "+" << a[k] << endl;
				break;
			}else{
				k++;
				if(k == i){
					k = 0;
					j++;
				}
			}
		}
	}

	return 0;
}
2024/9/3 19:52
加载中...