输入n(n<10)个整数,统计其中素数的个数。要求程序由两个文件组成,一个文件中编写main函数,另一个文件中编写素数判断的函数。使用文件包含的方式实现。
时间: 2023-09-04 07:03:56 浏览: 71
从键盘任意输入两个整数,输出两数之间的素数,素数判断用函数实现。 扩展要求:1)程序可以循环执行,判断完一组可以再进行下一组;可以设定一个特殊键退出
5星 · 资源好评率100%
### 回答1:
首先,我们需要编写判断素数的函数,假设这个函数名为 `isPrime()`。然后,在主函数中,我们需要读入n个整数,对每个整数调用 `isPrime()` 函数,如果返回值为true,则计数器加1。最后输出素数的个数即可。
以下是具体实现:
首先是素数判断函数 `isPrime()` 的实现,我们将其保存在一个名为 `isPrime.h` 的头文件中:
```c++
#ifndef ISPRIME_H_INCLUDED
#define ISPRIME_H_INCLUDED
bool isPrime(int n) {
if (n <= 1) {
return false;
}
for (int i = 2; i <= sqrt(n); i++) {
if (n % i == 0) {
return false;
}
}
return true;
}
#endif // ISPRIME_H_INCLUDED
```
然后,在主函数所在的源文件中,我们需要包含 `isPrime.h` 头文件,并且调用 `isPrime()` 函数。具体实现如下:
```c++
#include <iostream>
#include "isPrime.h"
using namespace std;
int main() {
int n, count = 0;
cin >> n;
for (int i = 0; i < n; i++) {
int num;
cin >> num;
if (isPrime(num)) {
count++;
}
}
cout << count << endl;
return 0;
}
```
最后,我们需要将这两个文件编译成可执行文件。假设源文件名为 `main.cpp`,则我们可以使用如下命令进行编译:
```
g++ main.cpp -o main
```
其中,`-o` 表示指定输出文件名为 `main`。编译成功后,我们就可以运行生成的可执行文件了。
### 回答2:
首先,在第一个文件中编写主函数如下:
```c
#include <stdio.h>
extern int isPrime(int num); // 导入判断素数的函数
int main() {
int n, num, count = 0; // n表示输入的整数个数,num表示当前输入的整数,count计数素数个数
printf("请输入整数个数:");
scanf("%d", &n);
printf("请输入%d个整数:\n", n);
for (int i = 0; i < n; i++) {
scanf("%d", &num);
if (isPrime(num)) {
count++;
}
}
printf("素数的个数为:%d\n", count);
return 0;
}
```
然后,在第二个文件中编写判断素数的函数如下:
```c
int isPrime(int num) {
if (num <= 1) {
return 0; // 小于等于1的数不是素数
}
for (int i = 2; i * i <= num; i++) {
if (num % i == 0) {
return 0; // 含有因子,则不是素数
}
}
return 1; // 没有因子,则是素数
}
```
最后,将两个文件保存为`main.c`和`prime.c`,并在`main.c`文件中使用`#include "prime.c"`来实现文件包含的方式。
### 回答3:
文件1(main函数所在文件):
```c++
#include <iostream>
#include "isPrime.h" // 引入素数判断的函数
int main() {
int n;
std::cout << "请输入整数的个数:";
std::cin >> n;
int num, count = 0; // num表示输入的整数,count表示素数的个数
for (int i = 0; i < n; i++) {
std::cout << "请输入第" << i+1 << "个整数:";
std::cin >> num;
// 调用素数判断函数isPrime()
if (isPrime(num)) {
count++;
}
}
std::cout << "素数的个数为:" << count << std::endl;
return 0;
}
```
文件2(素数判断函数所在文件,命名为isPrime.h):
```c++
bool isPrime(int num) {
if (num <= 1) {
return false;
}
for (int i = 2; i <= num / 2; i++) {
if (num % i == 0) {
return false; // 若能被任何2到num/2之间的数整除,则不是素数
}
}
return true;
}
```
在文件1中,首先要求用户输入整数的个数n。然后使用循环,依次输入n个整数,每输入一个整数都调用文件2中的素数判断函数isPrime()进行判断,若为素数,则素数个数count加1。最后输出素数的个数。
在文件2中,定义一个名为isPrime()的函数,参数为一个整数num,函数返回一个bool值。在函数中,首先判断num是否小于等于1,若是,则不是素数,返回false;然后使用循环,从2开始到num的一半,判断是否能被这些数整除,若能整除,则不是素数,返回false;若循环结束后都没有能整除的数,说明是素数,返回true。
阅读全文