素数的个数,各位大神看看啊!我不会啊!

素数的个数

描述

小明有这样一串正整数,但是他不知道到底多少个数字,只知道最后一个数字是0。现在他想知道这一串数字中到底有多少个数字是素数。请你编写程序来帮帮他。

输入

一串数字,一个数字一行,最后一个数字是0。 每个数字的范围是2 <= N <= 5 * 10 ^ 9。

输出

一个正整数,为这一串数字中素数的个数。

样例输入

7
9
10
6
0

样例输出

1

C++的代码,可以参考一下


//编程实现统计输入n个数,其中素数是多少个。
#include<stdio.h>
#include<math.h>
#include <iostream>
#define n 5
int main()
{
    int s[n];
    int i, t = 0, j;
    printf("请输入%d个整数\n", n);
    for (i = 0; i < n; i++) {
        std::cin >> s[i];

    }
    //判断个数是否是素数
    for (i = 0; i < n; i++)
    {
        for (j = 2; j <= sqrt(s[i]); j++)
        {

            if (s[i] % j == 0) {
                break;
            }
        }

        if (j > sqrt(s[i]) && s[i] != 1 && s[i] != 0)
        {
            t++;
        }
    }

    printf("素数的个数是:%d\n", t);
    return 0;
}

img

C++代码

#include <iostream>
#include <vector>
#include <cmath>

using namespace std;

bool is_prime(int n) {
    if (n <= 1) {
        return false;
    }
    for (int i = 2; i <= sqrt(n); i++) {
        if (n % i == 0) {
            return false;
        }
    }
    return true;
}

int main() {
    vector<int> nums;
    int num;
    while (true) {
        cin >> num;
        if (num == 0) {
            break;
        }
        if (num < 2 || num > 5 * pow(10, 9)) {
            cout << "输入数字超出范围,请重新输入" << endl;
            continue;
        }
        nums.push_back(num);
    }
    int count = 0;
    for (int i = 0; i < nums.size(); i++) {
        if (is_prime(nums[i])) {
            count++;
        }
    }
    cout << count << endl;
    return 0;
}