不用isprime写出这个代码
时间: 2024-10-24 19:18:22 浏览: 17
如果不用 `isPrime` 函数,我们也可以直接在主循环中判断每个数是否为素数,如下所示:
```c
#include <stdio.h>
#include <stdbool.h> // 使用bool类型替换整型返回值
#define MAX_NUM 100 // 可视化范围,你可以根据实际需求调整
bool isDivisibleBy(int num, int divisor) {
return (num % divisor == 0);
}
int main() {
int n, i;
printf("请输入一个大于2的整数:");
scanf("%d", &n);
printf("小于等于 %d 的所有素数有:\n", n);
for (i = 2; i <= n; i++) {
bool isPrime = true;
for (int j = 2; j * j <= i; j++) {
if (isDivisibleBy(i, j)) {
isPrime = false;
break;
}
}
if (isPrime && i != 1) { // 验证不是1(素数定义)
printf("%d ", i);
}
}
return 0;
}
```
这里,我们在内部循环中检查 `i` 是否能被从2到其平方根之间的任何数字整除,如果找到这样的数,则 `isPrime` 设置为 `false` 并跳出循环。如果 `i` 既不等于1也不是合数(即 `isPrime` 仍然为 `true`),那么它就是素数。
阅读全文