打表的的一个问题
查看原帖
打表的的一个问题
1616705
hh_ming楼主2025/7/21 14:57

这是题解里打5e8到1e9这个范围反素数的表,输出啥的没什么问题。

#include <bits/stdc++.h>
using namespace std;
short cnt[500000001];
int main(){
	for(int i=1;i<=1000000000;i++){
		for(int j=(500000000/i)*i+i;j<=1000000000;j+=i){
			cnt[j-500000000]++;
		}
	} 
	short hhh=1152;
	for(int i=1;i<=500000000;++i){
		if(cnt[i]>hhh) {
			hhh=cnt[i];
			printf("%d,",i+500000000);
		}
	}
	return 0;
}

那为什么1e9到1.5e9这个范围的这个代码有问题呢,没输出。

#include<bits/stdc++.h>
using namespace std;
short cnt[500000001];
int main(){
	for(int i=1;i<=1500000000;i++)
		for(int j=(1000000000/i)*i+i;j<=1500000000;j+=i)
			cnt[j-1000000000]++;
	short hhh=1344;
	for(int i=1;i<=500000000;i++){
		if(cnt[i]>hhh) {
			hhh=cnt[i];
			printf("%d,",i+1000000000);
		}
	}
	
	return 0;
}
2025/7/21 14:57
加载中...