这是题解里打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;
}