本题要求实现一个函数prime, 可判断一个整数是否为素数(一个正整数,除了1和本身之外再没因子,那么它就是素数。1不是素数,2是素数)。若一个数为素数,该函数应该返回非零埴,否则返回零。 函数接口定义: int prime ( int n ); n 的值不超过int的范围,函数须返回非零值或零。 裁判测试程序: #include <stdio.h> #include<math.h> int prime( int n ); int main() { int x; scanf("%d", &x); if(prime(x)) printf("%d是素数",x); else printf("%d不是素数",x); return 0; } /* 你提交的代码将被嵌在这里 */ 请将代码补全
时间: 2024-03-10 20:45:41 浏览: 116
3_判断素数_yes_
以下是实现 `prime` 函数的代码:
```c
#include <stdio.h>
#include <math.h>
int prime(int n) {
if (n <= 1) return 0; // 1不是素数
for (int i = 2; i <= sqrt(n); i++) {
if (n % i == 0) return 0; // 如果n能被i整除,说明n不是素数
}
return 1; // 否则n是素数
}
```
这个函数首先判断 n 是否小于等于 1,如果是则直接返回 0 表示不是素数。接着使用一个 for 循环从 2 到 sqrt(n) 遍历,如果 n 能被 i 整除,说明 n 不是素数,直接返回 0。如果 for 循环结束后仍然没有返回 0,说明 n 是素数,返回 1。
注意,在 for 循环中,我们使用了 `sqrt` 函数来计算 n 的平方根,这是因为如果 n 有一个因子大于 sqrt(n),那么它一定会有另一个因子小于 sqrt(n)。这样做可以减少循环次数,提高计算效率。
在主函数中,我们使用 `scanf` 函数读入一个整数 x,然后调用 `prime` 函数来判断 x 是否是素数。如果是,则输出 x 是素数,否则输出 x 不是素数。
阅读全文