更高效率的判断素数算法

简介: 用所需判断的数字 X 除以比它小的所有数字,若全部都不可以整除则是素数,否则不是素数

一、判断素数常规思想


用所需判断的数字 X 除以比它小的所有数字,若全部都不可以整除则是素数,否则不是素数


二、判断素数的优化算法


不必从 X-1 开始判断是否能被 X 整除,而是从 根号X 开始判断,因为一个数若不是素数,则至少可以被两个数字整除,假设为 a 和 b ,则 a<=根号X ,b>=根号X


所以可以从 根号X 开始判断,效率更高!

//判断是否为素数
bool is_prime(int num)
{
  for (int i = 2; i <= sqrt(num); i++)//sqrt()函数是取根号
  {
  if (num % i == 0)
    return false;
  }
  return true;
}


目录
相关文章
|
7月前
|
搜索推荐 算法 C语言
【排序算法】C语言实现随机快排,巨详细讲解
【排序算法】C语言实现随机快排,巨详细讲解
|
存储 算法 Python
信息学奥赛 试除法:高效筛选素数的算法
本文介绍了在Python代码中如何使用试除法高效筛选素数。
136 0
|
人工智能 算法 C++
算法强化--分解因数
算法强化--分解因数
|
搜索推荐 算法
认识复杂度和简单排序算法
认识复杂度和简单排序算法
79 0
|
机器学习/深度学习 算法 索引
算法步步为营(1)-两数之和
给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出和为目标值 target 的那两个整数,并返回它们的数组下标。 你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。可以按任意顺序返回答案。
84 0
|
存储 算法 vr&ar
算法步步为营(02)-两数之和
两个非空链表,表示两个非负整数。它们每位数字都是逆序存储,且每个节点只能存储一位数字。 将两个数相加,并以相同形式返回一个表示和的链表。除了数字 0 之外,这两个数都不会以 0 开头。
104 0
|
存储 算法 C语言
动态规划算法解决背包问题,算法分析与C语言代码实现,时间效率解析
动态规划算法解决背包问题,算法分析与C语言代码实现,时间效率解析
203 0
|
机器学习/深度学习 算法 C语言
[最全算法总结]我是如何将递归算法的复杂度优化到O(1)的
[最全算法总结]我是如何将递归算法的复杂度优化到O(1)的
213 0
[最全算法总结]我是如何将递归算法的复杂度优化到O(1)的
|
算法 搜索推荐
算法与数据结构全阶班-左程云版(二)基础阶段之1.复杂度、对数器、二分法和异或运算(上)
本文主要介绍了数据结构与算法的基本概念,包括算法评价指标、复杂度、对数器、二分法和异或运算。
算法与数据结构全阶班-左程云版(二)基础阶段之1.复杂度、对数器、二分法和异或运算(上)
|
机器学习/深度学习 算法
算法实例——N皇后问题(位运算优化)
在一张N∗N的国际象棋棋盘上,放置N个皇后,使得所有皇后都无法互相直接攻击得到,(皇后可以直接攻击到她所在的横行,竖列,斜方向上的棋子),现在输入一个整数N,表示在N∗N的棋盘上放N个皇后,请输出共有多少种使得所有皇后都无法互相直接攻击得到的方案数。
166 0