c语言:设置一个函数判断是不是素数,是素数返回1,不是返回0
时间: 2024-03-02 10:52:32 浏览: 116
以下是判断素数的C语言函数实现:
```c
int isPrime(int n) {
if (n <= 1) {
return 0;
}
for (int i = 2; i * i <= n; ++i) {
if (n % i == 0) {
return 0;
}
}
return 1;
}
```
解释一下:
判断素数的方法很多,但是最常见的是遍历2到sqrt(n)之间的所有数字,如果其中存在能被n整除的数,那么n就不是素数,否则n是素数。
在代码中,首先判断n是否小于等于1,因为小于等于1的数都不是素数,如果是,直接返回0。
然后从2开始遍历到sqrt(n),依次判断n是否能被i整除,如果能整除,说明n不是素数,直接返回0。
如果遍历完了所有可能的i,都没有返回0,那么n就是素数,返回1。
相关问题
C语言:判断一个数是否为素数
以下是C语言判断一个数是否为素数的代码示例:
```c
#include <stdio.h>
#include <math.h>
int main() {
int i, j, n;
printf("Please input a number: ");
scanf("%d", &n);
j = (int)sqrt(n);
for (i = 2; i <= j; i++) {
if (n % i ==0) {
break;
}
}
if (j < i) {
printf("%d is a prime number!\n", n);
} else {
printf("%d is not a prime number!\n", n);
}
return 0;
}
```
该程序通过循环判断输入的数n是否能被2到sqrt(n)之间的数整除,如果能整除则不是素数,否则就是素数。其中sqrt()函数用于求n的平方根,需要包含math.h头文件。
用c语言编译:定义一个函数判断一个整型是否为素数,函数需要验证数据的合法性,如果小于等于0返回-1,如果是素数返回1,不是素数返回0。在主函数中输入数据输出结果
以下是用C语言编译的代码:
```c
#include <stdio.h>
#include <math.h>
int isPrime(int num) {
if (num <= 0) {
return -1; // 数据不合法,返回-1
}
if (num == 1) {
return 0; // 1不是素数,返回0
}
int limit = sqrt(num);
for (int i = 2; i <= limit; i++) {
if (num % i == 0) {
return 0; // 不是素数,返回0
}
}
return 1; // 是素数,返回1
}
int main() {
int num;
printf("请输入一个整数:");
scanf("%d", &num);
int result = isPrime(num);
if (result == 1) {
printf("%d是素数\n", num);
} else if (result == 0) {
printf("%d不是素数\n", num);
} else {
printf("数据不合法\n");
}
return 0;
}
```
首先,我们定义了一个名为 `isPrime` 的函数,用于判断一个整数是否为素数。在函数内部,我们首先验证了数据的合法性,如果小于等于0,就返回-1。接着,我们判断了1是否为素数,如果是1,就返回0。然后,我们使用一个for循环遍历2到num的平方根之间的所有整数,如果num能够被其中的某个数整除,就表示num不是素数,返回0。最后,如果for循环结束后仍然没有返回0,就表示num是素数,返回1。
在主函数中,我们首先使用 `scanf` 函数从用户输入中读取一个整数。然后,我们调用 `isPrime` 函数判断该整数是否为素数,并将结果保存在变量 `result` 中。最后,根据 `result` 的值输出相应的结果。
注意,为了使用 `sqrt` 函数计算平方根,我们需要在代码开始处添加 `math.h` 头文件的引用。
阅读全文