zoukankan      html  css  js  c++  java
  • 素数求解问题及优化

    1描述

    素数求解问题在程序员的面试中是个很简单的问题,经常是小公司的基础面试题。然而因为一些个小紧张什么的,弄跪了些许人

    那么,今天就关于这个问题我们来进行总结及方案优化

    素数概念:除了1和它本身不能被其他数整除的数字都是素数

    2实现

    思路:因此判断一个整数m是否是素数,只需把m被 2 ~ m-1 之间的每一个整数去除,如果都不能被整除,那么m就是一个素数。
    我们就围绕 bool IsPrime(int n) 判断一个数是否为素数来谈吧
     
    代码
     
    依据概念
    bool IsPrime(int n)
    {
         if(n < 2)
             return false;
          for(int i = 2;i<n;++i)
         {
          if(n%i==0)
             reurn false;
         }
    return true; }

     优化:因为偶数必然不为素数,所以i+=2;

    bool IsPrime(int n)
    {
    if(n < 2)  return false;   if(n == 2) return true;   for(int i = 3; i < n;i+=2)
    {  
    if(n%i==0)  return false;  } return true; }

    优化:对于数字M,要确定一个整除它的数字k,会有k1*K2==M,那么,K1,K2如何才能最小呢,那就是K1==K2,所以优化为i*i<n;

     bool IsPrime(int n)
     {
         if (n<2)
           return false;
         for (int i = 2; i*i < n; ++i)
         {
    if (n%i == 0) return false; } return true; }

    以上就是关于素数求解的全过程及优化。

  • 相关阅读:
    Vue3手册译稿
    Vue3手册译稿
    Vue3手册译稿
    Vue3手册译稿
    Vue3手册译稿
    Vue3手册译稿
    C# 多线程与异步的使用方法笔记
    PetaPoco 5.1.306 的生成模板加注释
    RichEditDocumentServer打印记录
    RichEditDocumentServer 打印份数
  • 原文地址:https://www.cnblogs.com/-zyj/p/5740842.html
Copyright © 2011-2022 走看看