【C语言之素数全家桶】判断一个数是否为素数;求100以内的所有素数;输入一个整数n,求出小于或等于n的所有素数;求绝对素数

本文介绍了素数的概念,提供了四个C语言实现的程序,分别用于判断一个数是否为素数、求100以内的所有素数、输入整数n获取小于或等于n的素数以及找出100以内所有绝对素数。这些程序展示了素数在编程中的应用。

1. 判断一个数是否为素数

素数概念:素数也称为质数,是一个大于1的自然数,且除了1和它本身外,不能被其他自然数整除。
如:2、3、5、7、11、13、17等

代码实现如下:

#include<stdio.h>

void main()
{
   
   
	int n,i,flag=1;//默认flag=1是素数
	scanf("%d",&n);
	for(i=2;i<n;i++)//遍历除了1和它本身外所有自然数
		if(n%i==0)//如果2-n之间有一个数能整除n,n就不是素数
			flag=0;
	if(flag==1)
		printf("%d是素数\n",n);
	else
		printf("%d不是素数\n",n);
}

运行结果如下:
在这里插入图片描述
在这里插入图片描述

2. 求100以内的所有素数

代码实现如下:

#include<stdio.h>

void main()
{
   
   
可以使用循环结构来实现多组据的测试,每组输入一个正整数 `n` 并判断是否素数。以下是几种不同的实现方式: ### 方式一:使用 `while` 循环结合 `EOF` 进行多组输入 ```c #include <stdio.h> #include <math.h> // 判断一个是否素数的函 int check(int n) { if (n <= 1) return 0; int i, k = 1; float m = sqrt((float)n); for (i = 2; i <= (int)m; i++) { if (n % i == 0) { k = 0; break; } } return k; } int main() { int n; while (scanf("%d", &n) != EOF) { if (check(n)) { printf("%d 是素数。\n", n); } else { printf("%d 不是素数。\n", n); } } return 0; } ``` 这个程序使用 `while` 循环 `scanf` 函读取输入,直到遇到文件结束符(EOF)。在每次循环中,调用 `check` 函判断输入是否素数,并出相应的结果。 ### 方式二:指定输入的组 ```c #include <stdio.h> // 判断一个是否素数的函 int isPrime(int x) { if (x <= 1) return 0; int i; for (i = 2; i < x; i++) { if (x % i == 0) { return 0; } } return 1; } int main() { int t, n; printf("请输入要测试的组: "); scanf("%d", &t); while (t--) { printf("请输入一个正整数: "); scanf("%d", &n); if (isPrime(n)) { printf("%d 是素数。\n", n); } else { printf("%d 不是素数。\n", n); } } return 0; } ``` 这个程序首先让用户输入要测试的组 `t`,然后使用 `while` 循环进行 `t` 次测试。在每次循环中,读取一个正整数 `n`,调用 `isPrime` 函判断是否素数,并出结果。 ### 方式三:使用 `for` 循环固定次输入 ```c #include <stdio.h> // 判断一个是否素数的函 int isPrime(int m) { if (m <= 1) return 0; int i; for (i = 2; i <= m / 2; i++) { if (m % i == 0) break; } return (i > m / 2 && m != 1); } int main() { int numTests; printf("请输入测试的次: "); scanf("%d", &numTests); for (int i = 0; i < numTests; i++) { int n; printf("请输入第 %d 个正整数: ", i + 1); scanf("%d", &n); if (isPrime(n)) { printf("%d 是素数!\n", n); } else { printf("%d 不是素数!\n", n); } } return 0; } ``` 此程序先让用户输入测试的次,然后使用 `for` 循环进行指定次的测试。每次循环中,读取一个正整数,调用 `isPrime` 函判断是否素数,并出相应结果。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值