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;
}

结果:

相关推荐
li星野5 分钟前
The 3 Common Tenses — Notes & Supplements
学习
小弥儿6 分钟前
GitHub今日热榜 | 2026-10-09:PS5 移植登顶,AI 创作工具占三席
人工智能·学习·开源·github
全栈道25 分钟前
AI 时代,软件开发应该如何学习
人工智能·学习
czq_268671948727 分钟前
Python打卡第34天
开发语言·python·机器学习
存在morning41 分钟前
【OLAP 学习笔记】Doris:数据湖之上的分析查询引擎
笔记·学习
代码山河42 分钟前
Java语言特点:跨平台、面向对象、安全性详解
java·学习·架构·教程·面向对象·项目
C++ 老炮儿的技术栈1 小时前
C++ const 的3个核心作用
服务器·c语言·c++·算法·c
小黄人软件1 小时前
粘贴助手C++版 支持 Windows 7 / 10 / 11 不会出现缺少api-ms-win-core-path-11-1-0.dll
开发语言·c++·windows
每天题库1 小时前
登高架设作业考试题库大全 核心考点真题刷题备考通关秘籍
学习·安全·考试·题库·考证
半亩码田1 小时前
C#转Python第4.7篇:logging:Python 的标准日志库
开发语言·python·c#