写出一个判别素数的函数,在主函数输入一个整数,输出是否素数的信息。本程序应准备以下测试数据:17,34,2,1,0,分别输入数据,运行程序并检查结果是否正确。
时间: 2023-05-31 15:18:25 浏览: 233
### 回答1:
以下是一个判别素数的函数:
```python
def is_prime(n):
if n <= 1:
return False
for i in range(2, int(n ** .5) + 1):
if n % i == :
return False
return True
```
在主函数中,可以输入一个整数,然后调用 is_prime 函数来判断是否为素数:
```python
n = int(input("请输入一个整数:"))
if is_prime(n):
print("{}是素数".format(n))
else:
print("{}不是素数".format(n))
```
测试数据:
- 输入 17,输出 17是素数,结果正确。
- 输入 34,输出 34不是素数,结果正确。
- 输入 2,输出 2是素数,结果正确。
- 输入 1,输出 1不是素数,结果正确。
- 输入 ,输出 不是素数,结果正确。
### 回答2:
判断素数的函数:
```c++
bool isPrime(int n) {
if (n <= 1) { // 非正整数都不是素数
return false;
}
for (int i = 2; i <= sqrt(n); i++) { // 判断从2到sqrt(n)是否能整除n
if (n % i == 0) {
return false;
}
}
return true; // 没有能整除n的数,n是素数
}
```
主函数:
```c++
int main() {
int nums[] = {17, 34, 2, 1, 0}; // 测试数据
int len = sizeof(nums) / sizeof(nums[0]);
for (int i = 0; i < len; i++) {
int n = nums[i];
bool is_prime = isPrime(n);
if (is_prime) {
cout << n << " 是素数" << endl;
} else {
cout << n << " 不是素数" << endl;
}
}
return 0;
}
```
程序运行结果:
```
17 是素数
34 不是素数
2 是素数
1 不是素数
0 不是素数
```
解释:
函数 `isPrime()` 判断一个数是否是素数,如果是素数返回 `true`,否则返回 `false`。
主函数中我们准备了几个测试数据,依次传入 `isPrime()` 函数中进行判断。结果发现,17 和 2 都是素数,而 34、1、0 都不是素数。
注意,在判断素数时,我们把小于等于 1 的数都认为不是素数,因为它们不是正整数。在循环中从 2 到 sqrt(n) 判断能否整除 n 的目的是为了避免重复判断,提高效率。实际上,判断质数可以更加高级,但这里给出的是一个比较简单的方法。
### 回答3:
判断一个数是否为素数需要从2开始除到这个数的平方根,如果中间有能整除的数,那么它就不是素数。因为可以证明,在这个范围内没有能整除的数,那么这个数就一定是素数。
思路如下:
1.输入一个整数num。
2.如果num小于2,那么输出“不是素数”。
3.从2开始循环到num的平方根,判断是否有能整除的数。
4.如果有能整除的数,那么输出“不是素数”。
5.如果没有能整除的数,那么输出“是素数”。
代码如下:
```
#include <stdio.h>
#include <math.h>
int isPrime(int num) { // 判断素数的函数
int i;
if (num < 2) { // num小于2不是素数
return 0;
}
for (i = 2; i <= sqrt(num); i++) { // 从2开始到平方根循环
if (num % i == 0) { // 有能整除的数
return 0;
}
}
return 1; // 没有能整除的数
}
int main() {
int num;
printf("请输入一个整数:");
scanf("%d", &num);
if (isPrime(num) == 1) {
printf("%d是素数\n", num);
}
else {
printf("%d不是素数\n", num);
}
return 0;
}
```
测试代码如下:
```
#include <stdio.h>
#include <math.h>
int isPrime(int num) { // 判断素数的函数
int i;
if (num < 2) { // num小于2不是素数
return 0;
}
for (i = 2; i <= sqrt(num); i++) { // 从2开始到平方根循环
if (num % i == 0) { // 有能整除的数
return 0;
}
}
return 1; // 没有能整除的数
}
int main() {
int num[] = {17, 34, 2, 1, 0}; // 测试数据
int i;
for (i = 0; i < 5; i++) { // 循环测试数据
if (isPrime(num[i]) == 1) { // 是素数
printf("%d是素数\n", num[i]);
}
else { // 不是素数
printf("%d不是素数\n", num[i]);
}
}
return 0;
}
```
输出结果如下:
```
17是素数
34不是素数
2是素数
1不是素数
0不是素数
```
可见,算法正确,测试数据也能够正确判断是否为素数。
阅读全文