C语言给定一个正整数n,(20≤n≤100)n,(20≤n≤100),求出小于等于n的所有素数。 输入第1行是一个整数T,表示随后有T组数据。每组数据占1行,每行有1个整数。 输出对每组数据输出小于等于n的所有素数,以空格隔开,并换行。
时间: 2024-10-17 08:13:59 浏览: 45
在C语言中,你可以使用上述的埃拉托斯特尼筛法结合循环结构来解决这个问题。这里有一个简单的示例代码:
```c
#include <stdio.h>
#define MAX 101
// 判断是否为素数
int isPrime(int num) {
if (num <= 1)
return 0;
for (int i = 2; i * i <= num; i++) {
if (num % i == 0)
return 0;
}
return 1;
}
// 打印小于等于n的所有素数
void printPrimes(int n) {
int prime[MAX] = {0};
for (int i = 2; i <= n; i++) {
if (isPrime(i))
prime[i] = 1;
}
// 输出素数
for (int i = 2; i <= n; i++) {
if (prime[i])
printf("%d ", i);
}
printf("\n");
}
int main() {
int T;
scanf("%d", &T);
while (T--) {
int n;
scanf("%d", &n);
printPrimes(n);
}
return 0;
}
```
这段代码首先判断每一个数是否为素数,然后记录下素数的位置。最后,遍历数组并输出那些值为1的位置对应的数,即为素数。
阅读全文