输入n(n<10)个整数,统计其中素数的个数。要求程序由两个文件组成,一个文件中编写main函数,另一个文件中编写素数判断的函数。使用文件包含的方式实现。
时间: 2023-09-03 08:26:29 浏览: 178
### 回答1:
首先,我们可以新建一个名为 `prime.h` 的头文件,用于声明素数判断函数:
```c++
#ifndef PRIME_H
#define PRIME_H
bool isPrime(int n);
#endif
```
然后,在一个名为 `prime.cpp` 的文件中实现素数判断函数:
```c++
#include "prime.h"
bool isPrime(int n) {
if (n < 2) {
return false;
}
for (int i = 2; i <= sqrt(n); i++) {
if (n % i == 0) {
return false;
}
}
return true;
}
```
这里使用了一个简单的算法判断一个数是否为素数。
最后,在一个名为 `main.cpp` 的文件中调用素数判断函数,并统计素数的个数:
```c++
#include <iostream>
#include "prime.h"
using namespace std;
int main() {
int n, count = 0;
cin >> n;
for (int i = 0; i < n; i++) {
int x;
cin >> x;
if (isPrime(x)) {
count++;
}
}
cout << count << endl;
return 0;
}
```
这里使用了 `prime.h` 头文件中声明的 `isPrime` 函数来判断每个输入的数是否为素数,并统计素数的个数。
最后,将三个文件放在同一目录下,并使用编译器进行编译链接即可。
### 回答2:
文件1: main.cpp
```cpp
#include <iostream>
#include "prime.h"
int main() {
int n;
std::cout << "请输入整数的个数n(n<10): ";
std::cin >> n;
int count = 0;
std::cout << "请输入" << n << "个整数: ";
for (int i = 0; i < n; i++) {
int num;
std::cin >> num;
if (isPrime(num)) {
count++;
}
}
std::cout << "素数的个数为: " << count << std::endl;
return 0;
}
```
文件2: prime.h
```cpp
#ifndef PRIME_H
#define PRIME_H
bool isPrime(int num);
#endif
```
文件3: prime.cpp
```cpp
#include "prime.h"
bool isPrime(int num) {
if (num <= 1) {
return false;
}
for (int i = 2; i*i <= num; i++) {
if (num % i == 0) {
return false;
}
}
return true;
}
```
在文件1中,我们首先读取整数个数n,然后使用for循环读取n个整数。对于每个整数,我们调用isPrime函数判断是否为素数,如果是素数,则素数个数加1。最后输出素数的个数。
在文件2中,我们声明了isPrime函数的原型,该函数用来判断一个整数是否为素数。
在文件3中,我们实现了isPrime函数。该函数首先判断如果小于等于1,则不是素数,直接返回false。然后使用一个for循环从2到sqrt(num)遍历,如果num能够整除i,则不是素数,返回false。如果循环结束都没有找到能整除num的数,则认为num是素数,返回true。
以上是使用文件包含的方式实现统计n个整数中素数的个数。
### 回答3:
首先,在第一个文件中的main函数中,需要读取用户输入的n个整数,并将它们保存到一个数组中。然后,通过调用第二个文件中的素数判断函数,依次判断每个整数是否为素数,如果是素数,则计数器加1。最后,输出素数的个数。
在第二个文件中的素数判断函数中,定义一个布尔型的函数isPrime,用来判断一个整数是否是素数。素数是指大于1且只能被1和自身整除的整数。函数isPrime需要接收一个整数作为参数,并返回一个布尔值,表示该整数是否是素数。
以下是示例代码:
// file1.cpp
#include <iostream>
#include "file2.cpp" // 包含第二个文件
int main() {
int n;
std::cout << "请输入整数的个数:";
std::cin >> n;
int nums[n];
std::cout << "请输入" << n << "个整数:";
for (int i = 0; i < n; i++) {
std::cin >> nums[i];
}
int count = 0;
for (int i = 0; i < n; i++) {
if (isPrime(nums[i])) {
count++;
}
}
std::cout << "素数的个数为:" << count << std::endl;
return 0;
}
// file2.cpp
bool isPrime(int num) {
if (num <= 1) {
return false;
}
for (int i = 2; i * i <= num; i++) {
if (num % i == 0) {
return false;
}
}
return true;
}
在上述代码中,首先在主函数中定义了一个数组来存储用户输入的n个整数。然后,通过循环调用isPrime函数来判断数组中的每个整数是否为素数,并根据结果进行计数。最后,输出结果。
素数判断函数isPrime中,使用了常见的素数判断算法,即从2到开方后的整数范围遍历,判断是否能被整除。如果能被整除,则说明不是素数;如果循环结束后仍未被整除,则说明是素数。
阅读全文