紧急求助,莫名bug!!!
查看原帖
紧急求助,莫名bug!!!
182882
zhangxn楼主2020/8/1 10:44

当输入大于8008(不要问我数怎么来的)时第一行的输出变成了4=3+1??? 下面是代码,求助大佬QAQ

#include<iostream>
#include<cstdio>
#include<cmath>
#include<cstring>
using namespace std;
int n,m,tmp,Prime[1000];
bool isPrime[10005];
int main() {
	cin>>n;//输入
	memset(isPrime,1,sizeof(isPrime));
	isPrime[1]=0;
	for(int i=2; i<=n; i++) {
		if(isPrime[i])Prime[++m]=i;
		for(int j=1; j<=m&&n>=(tmp=i*Prime[j]); j++) {
			isPrime[tmp]=0;
			if(i%Prime[j]==0)break;
		}
	}//线性筛素数
	for(int i=4; i<=n; i+=2) {
		for(int j=1; j<=m; j++) {
			if(isPrime[tmp=i-Prime[j]]) {
			    printf("%d=%d+%d\n",i,Prime[j],tmp);
			    break;
			}
		}
	}
	return 0;
}
2020/8/1 10:44
加载中...