更高效率的判断素数算法

简介: 用所需判断的数字 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;
}


目录
相关文章
|
5月前
|
算法
【算法】位运算算法——消失的两个数字(困难)
【算法】位运算算法——消失的两个数字(困难)
|
2月前
|
存储 缓存 算法
如何提高二叉树遍历算法的效率?
选择合适的遍历算法,如按层次遍历树时使用广度优先搜索(BFS),中序遍历二叉搜索树以获得有序序列。优化数据结构,如使用线索二叉树减少空指针判断,自定义节点类增加辅助信息。利用递归与非递归的特点,避免栈溢出问题。多线程并行遍历提高速度,注意线程安全。缓存中间结果,避免重复计算。预先计算并存储信息,提高遍历效率。综合运用这些方法,提高二叉树遍历算法的效率。
69 5
|
7月前
|
算法 自然语言处理 Rust
【算法】16. 最接近的三数之和(多语言实现)
给你一个长度为 n 的整数数组 nums 和 一个目标值 target。请你从 nums 中选出三个整数,使它们的和与 target 最接近。 返回这三个数的和。 假定每组输入只存在恰好一个解。
|
算法 搜索推荐
深入探索快速排序:高效分而治之的算法
深入探索快速排序:高效分而治之的算法
109 0
|
算法 Go 索引
870. 优势洗牌:田忌赛马:贪心算法+双指针
这是 力扣上的 870. 优势洗牌,难度为 中等。
139 0
|
算法 C语言
海量数据中找出前k大数(topk问题),一篇文章教会你
海量数据中找出前k大数(topk问题),一篇文章教会你
962 0
|
搜索推荐 算法
认识复杂度和简单排序算法
认识复杂度和简单排序算法
82 0
|
机器学习/深度学习 算法 索引
算法步步为营(1)-两数之和
给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出和为目标值 target 的那两个整数,并返回它们的数组下标。 你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。可以按任意顺序返回答案。
90 0
|
存储 算法 vr&ar
算法步步为营(02)-两数之和
两个非空链表,表示两个非负整数。它们每位数字都是逆序存储,且每个节点只能存储一位数字。 将两个数相加,并以相同形式返回一个表示和的链表。除了数字 0 之外,这两个数都不会以 0 开头。
110 0