求看有什么不同,orz
对的
#include <bits/stdc++.h>
using namespace std;
bool book[80000057];
long long prime[80000057],pos,i,j,n,nb;
int main(){
cin>>n;
for(i=2;i<=n;i++){
if(!book[i]) prime[++pos]=i;
for(j=1;j<=pos;j++){
if(i*prime[j] > n) break;
book[i*prime[j]]=1;
if(i%prime[j]==0) break;
}
}
for(int i=1;i<=pos;i++)
nb+=prime[i];
cout<<nb;
return 0;
}
错的
#include<bits/stdc++.h>
using namespace std;
bool vis[100005];
int z[100005],ji,n,H;
int main()
{
cin>>n;
for(int i=2;i<=n;i++)
{if(!vis[i])z[++ji]==i;
for(int j=1;j<=ji;j++)
{if(z[j]*i>n)break;
vis[i*z[j]]=1;
if(i%z[j]==0)
break;
}
}
for(int i=1;i<=ji;i++)
H+=z[i];
cout<<H;
return 0;
}