C语言刷题函数1-判断素数(分支语句,函数两种方法)

题目要求:判断100-200之间的素数。

一.素数定义

素数(质数)是指大于1的自然数,除了1和它本身之外,不能被其他自然数整除。

二.基本算法:试除法

判断一个数n是否为素数,只需检查2到n-i是否有n的因子。

因子:若整数 a / b 能整除、没余数,b 就是 a 的因子(因数)。

本题代码:(分支语句)

复制代码
#include <stdio.h>
int main()
{
	int i = 0;
	//遍历100-200之间的所有数字
	for (i = 100; i <= 200; i++)
	{
		//判断i是否是素数?
		//产生2到i-1之间的数字。


		int flag = 1;//标记素数,1是素数,0不是素数,先假设i是素数。
		int j = 0;
		//试除法
		for (j = 2; j <= i - 1; j++)
		{
			if (i % j == 0)
			{
				flag = 0;
				break;
			}
			
		}
		
		if (flag == 1)
		{
			printf("%d ",i);
		}

	}
	return 0;
}

三.优化

优化1:偶数一定不是素数:

for(int i = 100;i < =200;i++) --> for(int i = 101;i <= 200;i +=2)。

优化2:只需检查根号n。--> 用sqrt(平方根)函数,需要调用头文件<math.h>。

因为如果n有因子,至少有一个因子≤√n。否则两个因子都大于√n,乘积就会大于n,矛盾。

代码:

复制代码
#include <stdio.h>
#include <math.h>
int main()
{
	int i = 0;
	for (i = 101; i <= 200; i += 2)//偶数一定不是素数
	{
		//判断i是否是素数?
		//产生2到i-1之间的数字。
		int flag = 1;//假设i是素数
		int j = 0;
		//sqrt是计算平方根 --> 要调用头文件<math.h>
		for (j = 2; j <= sqrt(i); j++)
		{
			if (i % j == 0)
			{
				flag = 0;
				break;
			}

		}

		if (flag == 1)
		{
			printf("%d ", i);
		}

	}
	return 0;
}

运行结果:

四.函数封装(思路与上面几乎一样)

代码:

复制代码
#include <stdio.h>
#include<math.h>

int IsPrime(int n)//判断素数
{
	int j = 0;
	int flag = 1;//假设i是素数

	//试除
	for (j = 2; j < sqrt(n); j++)
	{
		if (n % j == 0)
		{
			return 0;//不是素数,返回0。
		}
	}
	return 1;//是素数,返回1。
}

int main()
{
	//遍历所有待查数字。
	for (int i = 101; i <= 200; i+= 2)
	{
		int ret = IsPrime(i);//调用函数
		//打印结果
		if (ret == 1)
		{
			printf("%d是素数\n",i);
		}
		
	}
	return 0;
}

结果:

相关推荐
萧瑟余晖4 小时前
JDK 26 新特性详解
java·开发语言
马优晨4 小时前
Freemarker 完整讲解(后端 Java 模板引擎)
java·开发语言·freemarker·freemarker 完整讲解·freemarker模板引擎
a1117766 小时前
2FA 验证码生成器(github登录验证 app)
笔记·学习
我的xiaodoujiao6 小时前
API 接口自动化测试详细图文教程学习系列32--Allure测试报告2
python·学习·测试工具·pytest
人邮异步社区6 小时前
怎么把C语言学到精通?
c语言·开发语言
心平气和量大福大7 小时前
C#-WPF-控件-TextBox 数据绑定
开发语言·c#·wpf
ttwuai7 小时前
Cursor 生成 CRUD 后,Go 后台接口别只测 200:JWT、RBAC 和 tenant_id 怎么验
开发语言·后端·golang
এ慕ོ冬℘゜7 小时前
前端基础:什么是时间戳?JS获取时间戳三种方法与实战用途
开发语言·前端·javascript
执明wa7 小时前
LayoutInflater详解: XML是如何变成View的?
android·xml·开发语言·android studio
一次旅行7 小时前
Python+大模型端到端自动化日报系统
开发语言·python·自动化