华为OD面试手撕算法-求素数个数

本文介绍了一种简单的算法,用于计算小于给定整数n的所有素数的数量。通过遍历并判断每个数是否为素数,实现函数GetPrimeNumber(n)和isPrime(num),在代码中利用sqrt优化了素数检查过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

题目描述

给定整数n,返回所有小于n的素数的数量

思路分析

题目比较简单,重点在于如何判断一个数是否为素数-“只能被自身和1整除”。对于给定的n:

若n < 2:直接返回0;否则遍历2-n判断当前数是否为素数,为素数时count+1,最后返回count。

代码实现

func GetPrimeNumber(n int) int {
	count := 0
	if n < 2 {
		return count
	}
	for i := 2; i < n; i++ {
		if isPrime(i) {
			count++
		}
	}
	return count
}

func isPrime(num int) bool {
	for i := 2; i <= int(math.Sqrt(float64(num))); i++ {
		if num%i == 0 {
			return false
		}
	}
	return true
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值