素数的个数
描述
小明有这样一串正整数,但是他不知道到底多少个数字,只知道最后一个数字是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;
}
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;
}