用c语言,从控制台输入整数n(n>=1),计算并输出从1到n之间(包括n)个位为1的所有素数,若没有符合要求的素数,则输出-1。
时间: 2024-11-23 07:40:54 浏览: 32
在 C 语言中,我们可以使用 Sieve of Eratosthenes 算法来找出指定范围内的所有素数。然后我们遍历这个范围,只打印出个位为1的素数。以下是实现这一功能的一个示例:
```c
#include <stdio.h>
#include <stdbool.h>
// 判断是否为素数
bool isPrime(int num) {
if (num <= 1) return false;
for (int i = 2; i * i <= num; i++) {
if (num % i == 0)
return false;
}
return true;
}
// 主函数
void findOnesBasedPrimes(int n) {
bool prime[n + 1];
memset(prime, true, sizeof(prime)); // 初始化所有数字为素数
// 除了1,其他数字不是素数
prime[0] = prime[1] = false;
int count = 0;
for (int i = 2; i <= n; ++i) {
// 检查当前数字的个位是否为1,并且它是素数
if (prime[i] && (i % 10 == 1)) {
printf("%d ", i);
count++;
}
}
// 如果没有找到符合条件的素数,输出 -1
if (count == 0)
printf("-1\n");
}
int main() {
int n;
printf("请输入一个大于等于1的整数: ");
scanf("%d", &n);
findOnesBasedPrimes(n);
return 0;
}
```
阅读全文