输出100以内的全部素数。自定义函数IsPrime()来判断素数用c语言
时间: 2023-08-31 07:06:37 浏览: 273
以下是用C语言实现的输出100以内全部素数的程序,其中自定义函数IsPrime()用来判断素数:
```c
#include <stdio.h>
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;
}
int main() {
for (int i = 2; i <= 100; i++) {
if (IsPrime(i)) {
printf("%d ", i);
}
}
return 0;
}
```
运行结果:
```
2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97
```
相关问题
用c语言写isprime函数判断素数
在C语言中,编写一个`isprime`函数用于判断一个整数是否为素数,可以按照下面的步骤进行:
```c
#include <stdio.h>
// 定义一个布尔型的函数isprime,接收一个整数作为参数
int isprime(int num) {
// 素数定义:大于1的自然数且只有1和它本身两个正因数
if (num <= 1) {
return 0; // 1不是质数,0和负数也不算
} else if (num == 2) {
return 1; // 2是最小的质数
} else {
// 循环检查从2到sqrt(num),如果找到能整除的数就返回0,表示不是质数
for (int i = 2; i * i <= num; i++) {
if (num % i == 0) {
return 0;
}
}
return 1; // 没有找到因子,那么它是质数
}
}
int main() {
int number;
printf("请输入一个整数:");
scanf("%d", &number);
if (isprime(number)) {
printf("%d是质数\n", number);
} else {
printf("%d不是质数\n", number);
}
return 0;
}
```
如何使用C语言实现素数判断函数IsPrime(),分别用goto、break和标志变量试商法来判断素数。
在C语言中,素数判断函数通常通过试除法进行,即检查一个数是否能被小于它的所有数整除。这里有三种常见的实现方式:
1. **使用 goto 和 break** (非推荐做法,因为这会使代码难以理解和维护):
```c
#include <stdio.h>
void IsPrimeUsingGoto(int num) {
int i;
if (num <= 1) {
printf("%d 不是素数\n", num);
return;
}
for (i = 2; i <= num / 2; i++) {
if (num % i == 0) {
goto is_not_prime; // 如果找到因子,直接跳到标记处
}
}
printf("%d 是素数\n", num);
is_not_prime:
printf("%d 不是素数\n", num);
}
int main() {
int n;
printf("请输入一个正整数:");
scanf("%d", &n);
IsPrimeUsingGoto(n);
return 0;
}
```
2. **使用 break** (更清晰一些):
```c
#include <stdio.h>
int IsPrimeUsingBreak(int num) {
if (num <= 1)
return 0;
for (int i = 2; i * i <= num; i++) { // 只需检查到根号即可
if (num % i == 0) {
break;
}
if (i * i == num) // 防止测试偶数时重复
break;
}
if (i * i > num)
return 1; // 没有找到因子,所以是素数
return 0; // 找到了因子,不是素数
}
int main() {
int n;
printf("请输入一个正整数:");
scanf("%d", &n);
if (IsPrimeUsingBreak(n))
printf("%d 是素数\n", n);
else
printf("%d 不是素数\n", n);
return 0;
}
```
3. **使用标志变量(推荐的做法,采用循环条件改变)**:
```c
#include <stdio.h>
int is_prime(int num, int* flag) { // 使用指针避免多次声明标志变量
if (num <= 1) {
*flag = 0;
return 0;
}
for (int i = 2; i * i <= num; i++) {
if (num % i == 0) {
*flag = 0;
break;
}
}
*flag = 1; // 没有找到因子,设标志为1表示是素数
return 1;
}
int main() {
int n, prime_flag = 0;
printf("请输入一个正整数:");
scanf("%d", &n);
if (is_prime(n, &prime_flag)) {
if (prime_flag)
printf("%d 是素数\n", n);
else
printf("%d 不是素数\n", n);
}
return 0;
}
```
阅读全文