编写一个c语言程序,输入一个整数N(N>=3),要求输出所有小于等于N的质数。其中,质数是只能被1和自身整除的正整数。
时间: 2023-12-18 19:02:24 浏览: 99
以下是一个简单的C语言程序,用于输出小于等于N的所有质数:
```c
#include <stdio.h>
int main() {
int n, i, j, is_prime;
// 读入N
printf("请输入N:");
scanf("%d", &n);
// 输出小于等于N的所有质数
printf("小于等于%d的所有质数为:\n", n);
for (i = 2; i <= n; i++) {
// 判断i是否是质数
is_prime = 1;
for (j = 2; j < i; j++) {
if (i % j == 0) {
is_prime = 0;
break;
}
}
if (is_prime) {
printf("%d ", i);
}
}
return 0;
}
```
程序中使用了两个循环来实现输出小于等于N的所有质数。外层循环遍历从2到N的所有正整数,内层循环用于判断当前数是否是质数。如果当前数能够被2到i-1之间的任何一个数整除,则说明它不是质数,内层循环可以提前退出。如果内层循环完成后仍然没有找到能整除当前数的数,则说明当前数是质数,可以将其输出。
相关问题
编写一个c语言程序解决输入2个整数n和m(1<= n <= m <=200),输出n至m之间的所有素数。
#include <stdio.h>
int main()
{
int n, m, i, j, flag;
printf("请输入两个正整数n和m(1<= n <= m <=200):");
scanf("%d %d",&n,&m);
printf("%d 和 %d 之间的素数有:\n", n, m);
for(i=n; i<=m; i++)
{
flag = 0;
// 判断i是不是素数
for(j=2; j<i; j++)
{
if(i%j == 0)
{
flag = 1;
break;
}
}
if(flag == 0)
printf("%d ", i);
}
return 0;
}
用c语言,从控制台输入整数n(n>=1),计算并输出从1到n之间(包括n)个位为1的所有素数,若没有符合要求的素数,则输出-1。
在 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;
}
```
阅读全文