C语言经典例12-判断素数最简单的方法

本文详细解析了素数判断的基本原理及三种优化方法,从暴力遍历到仅判断至平方根,逐步提升算法效率,最后给出101到200间素数的输出实例。

1 题目

判断并输出101到200之间的素数

注:想节约时间的可以直接看实现3

2 分析

本题的关键是输出素数,素数又叫质数,指在大于1的自然数中,除了1和它本身以外不再有其他因数的自然数,必须为正整数,1和0既非素数也非合数,所以在写判断素数的函数时

  • 第一步首先判断给的数是否大于2,若小于2,则直接判断为非素数,
  • 第二步则用一个for循环来对小于该数的各个数依次取余,若取余后等于0,则它不是素数,那么容易得出实现1,仔细想想可以发现,一个数去除以比它的一半还要大的数,一定是除不尽的,这用不着判断,所以要改进for循环中的循环控制语句,改为i < n/2 + 1,见实现2

那么还可以再优化吗?答案是可以的,在数学上有个规律,对于一个小于n的整数x,若n不能整除x,则n必定不能整数n/x,那么带来一个明显的优化就是循环控制语句从2 n \sqrt{n} n 即可,因为在判断2的同时也判断了n/2,循环到 n \sqrt{n}

评论 6
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值