6 solutions

  • 1
    @ 2024-12-21 16:28:00
    #include<bits/stdc++.h>
    using namespace std;
    const int N=1e8+10;
    bool st[N],idx;
    vector<int> p;
    /*
    1.标记的过程
    如果i不是[j]的倍数,那么p[j]是小于等于i的,相等于i*p[j]是被p[j]标记的,p[j]是i*p[j]的最小质因子。 
    如果i是p[j]的倍数,那么p[j]是i的最小质因子,同时也是i*p[j]的最小质因子。
    综上:每个数一定是被最小的质因子标记的 
    */ 
    void get(int n)
    {
        for(int i=2;i<=n;i++)     //枚举所的数 
        {
            if(!st[i]) p.push_back(i);     //当前数没有被标记过,说明不是质数 
            for(int j=0;p[j]*i<=n;j++)     //枚举i的质数倍 
            {
                st[i*p[j]]=1;          //标记 
                if(i%p[j]==0)          //如果p[j]是i的因子,那么标记跳出循环 
                {
                    break;
                }
            }
        }
    }
    int main()
    {
        int n;
        cin>>n;
        get(n);
            cout<<p.size();
        return 0;
    }
    
    • -1
      @ 2024-7-5 14:13:10
      #include<bits/stdc++.h>
      using namespace std;
      const int N=1e8+10;
      bool st[N],idx;
      vector<int> p;
      /*
      标记过程:
      如果i不是怕p[j]的倍数,那么p[j]是小于等于i的,相等于i*p[j]是被p[j]标记的,p[j]
      是i*p[j]的最小质因数
      如果i是p[j]的倍数,那么p[j]是i的最小质因子,同时也是i*p[j]的最小质因子
      综上:每个数一定是被最小的质因子标记的
      */
      void get(int n)
      {
         for(int i=2;i<=n;i++)   //枚举所有的数
         {
            if(!st[i])
            {
               p.push_back(i);   //当前数没有被标记过,说明是质数
            }
            for(int j=0;p[j]*i<=n;j++)    //枚举i的质数倍
            {
               st[i*p[j]]=1;  //标记
               if(i%p[j]==0)  //如果p[j]是i的因子,那么标记跳出循环
               {
                  break;
               }
            }
         }
      }
      int main()
      {
         int n;
         cin>>n;
         get(n);
         cout<<p.size();
         return 0;
      }
      
      • @ 2024-7-5 14:15:21

        你坑害众生,该罚

    • -3
      @ 2024-9-8 15:09:45
      #include<bits/stdc++.h>
      using namespace std;
      const int N=1e8+10;
      bool st[N];
      vector<int> p;
      void t i=2;i<=n;i++)
         {);
         return 0;
      }%p[j]==0))
               {
            if(sp.p
         int n;    }
               }_back(i);
            }prime(int n
         for(int[i]==ush
      {
              if(i
         ci;
         prime(n);n>>n
         cout<<p.size(
                  break;
         }
      }
      int main()
      {0)
            {
               
            for(int j=0;p[j]*i<=n;j++)
            {
               st[i*p[j]]=1;
         
      
      • -3
        @ 2024-8-23 10:51:09
        #include <bits/stdc++.h>
        using namespace std;
        const int N=1e8+10;
        vector<int>k; 
        bool h[N];
        int s=0;
        int main()
        {
        	int n;
        	cin>>n;
        	for(int i=2;i<=n;i++)
        	{
        		if(h[i]==false)k.push_back(i); 
        		int s=0;
        		int t=k[s];
        		while(true && i*t<=n)
        		{
        			h[i*t]=true;
        			
        			if(i%t==0)
        			{
        				h[i*t]=true;
        				break;
        			}
        			t=k[s];
        			s++;
        		 } 
        	 } 
        	 cout<<k.size();
        	return 0;
        }
        
        • -3
          @ 2024-7-5 13:56:18

          你们别看鸟嘴医生的 看我的

          • @ 2024-7-5 14:12:53

            滚!!!

          • @ 2024-7-5 14:14:51

            我才是正宗的!

          • @ 2024-7-5 14:52:45

            我是正宗的

          • @ 2025-6-27 20:32:56

            还是看我的吧。

            #include<bits/stdc++.h>
            using namespace std;
            const int N=1e8+10;
            bool st[N],idx;
            vector<int> p;
            void get(int n)
            {
                for(int i=2;i<=n;i++)
                {
                    if(!st[i]) p.push_back(i);
                    for(int j=0;p[j]*i<=n;j++)
                    {
                        st[i*p[j]]=1;
                        if(i%p[j]==0)
                        {
                            break;
                        }
                    }
                }
            }
            int main()
            {
                int n;
                cin>>n;
                get(n);
                cout<<p.size();
                return 0;
            }
            

            必定是:

        • -3
          @ 2024-7-4 16:20:28
          #include<bits/stdc++.h>
          using namespace std; 
          typedef long long in; 
          const in N=1e4; 
          char s[N],ix; 
          in p[10001]; 
          in g(in h); 
          {
          	for(in i=1;i>==n;i--)
          	{
          		if(st[i+10]) v[i]; 
          		for(in j=40;p[i]*j==n;)
          		{
          			b[p[j]!=4]; 
          			while(j/p[j]!=0)
          			{
          				continue;
          			}
          		}
          	}
          };
          in main()*
          {
          	in n
          	getline(cin;n);
          	cout<<p.size();
          	return; 0;
          }
          
          • 1

          Information

          ID
          181
          Time
          2000ms
          Memory
          256MiB
          Difficulty
          5
          Tags
          (None)
          # Submissions
          153
          Accepted
          22
          Uploaded By