当前位置: 首页 > article >正文

判断一个数是不是素数(质数)(c语言)

素数的定义:

大于1的自然数,除了1和他本身不再有其它的因数


数学原理:

假设一个num不是素数,必然存在一个因子,该因为一定<=√num,因此只要检测到√num中是否存在因子即可。

代码如下:

#include <stdio.h>
#include <math.h>

int is_prime(int num) 
{
	if (num < 2) return 0; // 0和1不是素数
	for (int i = 2; i * i <= num; i++) 
	{ // 只需检查到sqrt(num)
		if (num % i == 0) return 0; // 被整除说明不是素数
	}
	return 1; // 是素数
}

int main() 
{
	printf("100到200之间的素数有:\n");
	for (int i = 100; i <= 200; i++) 
	{
		if (is_prime(i)) 
		{
			printf("%d ", i);
		}
	}
	printf("\n");
	return 0;
}

程序运行:

这是函数内部,也就是判断素数的程序

通过is_prime(i)进行函数的调用,把实参i的值给的形参num

假设;i=100,把i的值赋值给num,此时num=100

然后进入函数内部,进入到for循环,此时i变成2

只要满足

就会一直循环(i的值一直变化),直到不满足上述条件为止,如果找不到因子,则为素数

若找到因子,则不是素数


函数内部return1和return0的作用:


如果写成这样

写成这样会导致程序误判,因为它会一直循环直到i==num,此时num%i == 0;不满足素数

则会return0,从而实现不了打印素数的程序

结语:限于水平,本篇文章不足之处在所难免,如发现错误可以指正下,谢谢大家,

你的支持是我前进的最大动力

xiaxia


http://www.kler.cn/news/361161.html

相关文章:

  • el-table在某些条件下禁止选中
  • 【R + Python】iNaturalist 网站图片下载 inat api
  • Linux基础命令(入门)
  • 商汤科技十周年公布新战略,将无缝集成算力、模型及应用
  • HCIP-HarmonyOS Application Developer 习题(十四)
  • 【3D】几何算法合集2(自用资源)方便cv
  • web服务器基石详解------nginx与 HTTP介绍篇
  • 蓝桥杯嵌入式ADC+DMA数据采样
  • 基于Multisim的模拟拔河游戏比赛设计与仿真
  • 征服ES(ElasticSearch)的慢查询实战
  • 全面解析:集成AWS、云原生和监控的开源运维管理平台
  • 分享时刻,随便谈谈
  • kotlin实现viewpager
  • Jmeter 实战 JDBC配置
  • HTTP Content-Type的常见类型解析
  • 力扣每日打卡挑战 3184. 构成整天的下标对数目 I
  • QTextEdit 实现特定文本以不同颜色添加显示(C++/QT)
  • 初阶数据结构【3】--单链表(比顺序表还好的一种数据结构!!!)
  • idea 发布jar包
  • c++日常积累