2 条题解

  • 1
    @ 2025-12-22 11:35:28
    #include<bits/stdc++.h>
    using namespace std;
    int check(int x){
        int sum=0;
    	for(int i=2;i*i<=x;i++)
    		if(x%i==0){
    			sum+=1;
    		}
        if(sum==0)
            return 1;
    	return 0;
    }
    int main(){
        int n,s=0;
        cin>>n;
    	for(int i=2;i<=n;i++)
    		if(check(i)!=0)
                s++;
        cout<<s;
    	return 0;
    }
    
    • -1
      @ 2025-12-19 21:15:04

      #include #include using namespace std;

      int countPrimes(int n) { if (n < 2) return 0;

      vector<bool> is_prime(n + 1, true);
      is_prime[0] = is_prime[1] = false;  // 0 和 1 不是素数
      
      for (int i = 2; i * i <= n; i++) {
          if (is_prime[i]) {
              // 从 i*i 开始标记,因为比 i*i 小的 i 的倍数已经被比 i 小的素数标记过了
              for (int j = i * i; j <= n; j += i) {
                  is_prime[j] = false;
              }
          }
      }
      
      int count = 0;
      for (int i = 2; i <= n; i++) {
          if (is_prime[i]) {
              count++;
          }
      }
      return count;
      

      }

      int main() { int n; cin >> n;

      cout << countPrimes(n) << endl;
      
      return 0;
      

      }

      • 1

      信息

      ID
      6985
      时间
      1000ms
      内存
      128MiB
      难度
      1
      标签
      递交数
      3
      已通过
      3
      上传者