温馨提示
  • 板块B2128 素数个数
  • 楼主nbdog
  • 当前回复0
  • 已保存回复0
  • 发布时间2024/8/3 14:34
  • 上次更新2024/8/3 16:04:17
查看原帖
温馨提示
1350837
nbdog楼主2024/8/3 14:34

这道题的范围小,可以用普搜:

#include<bits/stdc++.h>
using namespace std;
bool ss(int n){
	if(n<2) return 0;
	for(int i=2;i<=sqrt(n);i++){
		if(n%i==0) return 0;
	}
	return 1;
}
long long n,ans=0;
int main()
{
    cin>>n;
    for(int i=2;i<=n;i++){
        if(ss(i)){
            ans++;
        }
    }
    cout<<ans<<endl;
}

当然,也可以用“**”搜素大法:

#include<bits/stdc++.h>
bool f[100000005];
using namespace std;
int main(){
	int n,s=1;
	cin>>n;
	if(n==1){
	    cout<<0;
	    return 0;
	}
	for(int i=2;i*i<=n;i++){
	 if(!f[i]){
	   for(int j=2;j*i<=n;j++){
	    f[j*i]=1;
	  }     
	 }
	}
	
	for(int i=3;i<=n;i++){
	    if(!f[i]){
	    s++;
	  }
	}cout<<s<<endl;
	return 0;
}

2024/8/3 14:34
加载中...