如何用c++输出从2开始的连续100个素数

2025-04-24 00:36:52
推荐回答(2个)
回答1:

素数是一个大于1的自然数,除了1和其本身外,不能被其他自然数整除的数。C++从2开始输出连续的100个素数,则只需要从2开始往后循环,如果该数是素数,则输出,并统计加一,统计够100个素数时跳出循环即可。

示例代码:

#include 
bool is_prime(int n)
{
    int i;
    for (i = 2; i*i <= n; ++i){//从2到根号n循环
        if (n%i==0)return false;//如果n能被i整除,则不是素数
    }
    //没有大于2且小于n的数能被n整除的数,则是素数
    return true;
}

int main()
{
    int i, ct = 0;//统计初始化
    for (i = 2; ;++i){
        if (is_prime(i)){//是素数,输出并统计加一
            printf ("%d ", i);
            ct ++;
        }
        if (ct == 100)break;//够100个素数跳出循环
    }
    return 0;
}
/*
输出:
2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97 101 103 107 109 113 127 131 137 139 149 151 157 163 167 173 179 181 191 193 197 199 211 223 227 229 233 239 241 251 257 263 269 271 277 281 283 293 307 311 313 317 331 337 347 349 353 359 367 373 379 383 389 397 401 409 419 421 431 433 439 443 449 457 461 463 467 479 487 491 499 503 509 521 523 541
*/

回答2:

#include 
#include 
using namespace std;
int is_prime(int i)
{
    int j;
    for(j=2;j<=sqrt(i);j++)
    if(i%j==0)
        return 0;
    if(j>sqrt(i))
        return 1;
}
int main()
{
    int i;
    static int count=0;
    for(i=2;i<=1000;i++)
    {
        if(is_prime(i)==1)
        {
            cout<            count++;
            if(count==100)
            {
                return 0;
            }
        }
    }
    return 0;
}