码迷,mamicode.com
首页 > 其他好文 > 详细

对素数的判断和素数个数的判断

时间:2015-05-28 18:27:01      阅读:165      评论:0      收藏:0      [点我收藏+]

标签:c/c++

应该说这是比较高效的解题方法了吧。

素数个数计数:

class Solution {
public:
    int countPrimes(int n) {
       bool* a = new bool[n];  
     for(int i=2; i*i<n; i++) {  
        if(!a[i]) {  
            for(int j=i; i*j<n; j++) {  
                a[i*j] = true;  
            }  
        }  
     }  
     int c=0;  
       
     for(int i=2; i<n; i++) {  
        if(a[i] == false) ++c;  
    }     
  return c; 
    }
};

素数的判断:

bool primenum(int m)
    {
        int t=sqrt(m);
        for(int i=2;i<=t;i++)
        {
            if(m%i==0)
                return false;
        }
        return true;
    }

素数的判断可以对照下面一个程序:

int IsPrime(int N)
{
int i, j;  
if (N == 2) //按照国内标准,认为2是最小的素数
          return true;
      else
          if (N < 2 || N % 2 ==0)  //小于2或者大于2的偶数 不是素数
              return false;
      else //大于2的奇数
      {
          j = (int)sqrt(N + 1);  //个人认为,此处的+1毫无用处,姑且这么写吧
          for (i = 3; i <= j; i = i + 2)
              if (N % i == 0)
                  return false;
      }
      return true;
}


对素数的判断和素数个数的判断

标签:c/c++

原文地址:http://yuzwei.blog.51cto.com/10126623/1655957

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!