Advertisement

经典之作:筛选法求素数(埃氏筛与线性筛)

阅读量:

题目描述

统计小于非负整数n的质数数量

浑水摸鱼之蛮力验证法

直接上代码

复制代码
 bool is_zen(int x) {

    
 	int i = 2;
    
 	while (i * i <= x) {
    
 		if (x % i == 0) {
    
 			return 0;
    
 		}
    
 		i++;
    
 	}
    
 	return 1;
    
 }
    
  
    
 int countPrimes(int n) {
    
 	int count = 0;
    
 	for (int i = 2; i < n; i++) {
    
 		if (is_zen(i)) {
    
 			count++;
    
 		}
    
 	}
    
 	return count;
    
 }

普遍认为这是许多新手使用的办法,在处理小于n的所有正整数值时,会对每一个数字进行逐一排查以确定其是否为质数。

注意到的是,在质数判定方面,并非需要完全遍历每一个数来检查能否整除(即进行一次完整的遍历),而是只需计算到平方根值√x就可以确定其质数性质。这种优化使得计算过程更加高效且易于理解。

计算时间为O(n\sqrt{n})的算法所需内存空间为常数级$

全部评论 (0)

还没有任何评论哟~