这个通过率 只有40%是为什么

#include <iostream>
using namespace std;
int prime(int n);

int main()
{
   int T,n;
   cin>>T;
   while(T!=0)
   {
       cin>>n;
       prime(n);
       T--;
   }
}
int prime(int n)
{
    int i;
    bool *prime = new bool[n+1];
    for(i=2;i<n;i++)
    {
        prime[i] = true;
    }
    int sum=0;
    for(i=2;i<n;i++)
    {
        if(prime[i])
        {
            sum++;
            for(int j=i+i;j<n;j+=i)
            {
                prime[j] = false;
            }
        }
    }
    cout<<sum<<endl;
    return 0;
}

全部评论
因为素数筛很多人是不知道的
点赞 回复
分享
发布于 2023-03-11 21:16 美国
#include <iostream> using namespace std; const int x = 1000001;//使用const是因为能用在下面数组 int a[x];//存答案 bool is_prime[x];//数组内表示是不是质数,是质数为1(真)不是则为0(假) int main() {     for(int i = 0;i < x;i++)         is_prime[i] = true;//先把is_prime数组内的值都设为1(真)再使用埃式筛筛出不是质数的数变为0(假)     is_prime[0] = is_prime[1] = false;//0,1不是质数     for(int i = 2;i < x;i++)//埃式筛开始     {         if(is_prime[i])//是质数为真if语句触发         {             for(int j = 2 * i;j < x;j += i)             {                 is_prime[j] = false;//筛出不是质数的数都变为0(假)             }         }     }//埃式筛完结     for(int i = 2;i < x;i++)     {         if(is_prime[i])//是质数为真if语句触发             a[i] = a[i - 1] + 1;//统计质数个数方便下面输出         else//表示不是质数             a[i] = a[i - 1];//不是质数质数个数不变     }     int T,n;//题目所给变量     cin >> T;     while(T--)//T--表示个数越来越少直到为0(假)while循环不触发     {         cin >> n;         cout << a[n] << endl;//输出答案     }     return 0; }
点赞 回复
分享
发布于 2023-08-01 19:21 山东
联易融
校招火热招聘中
官网直投

相关推荐

1 收藏 评论
分享
牛客网
牛客企业服务