题解 | #牛牛的果实排序#
牛牛的果实排序
https://www.nowcoder.com/practice/975a263e2ae34a669354e0bd64db9e2a
/**
* 函数primeFruits接收一个数字数组trees,返回数组中所有质数对应的索引数组。
* 质数定义为大于1且只能被1和自身整除的数。
*
* @param trees 数字数组,代表每种水果的数量。
* @returns 数组,包含输入数组中质数的索引。
*/
export function primeFruits(trees: number[]): number[] {
// 如果输入数组为空,则直接返回空数组
if(!trees || trees.length == 0) return []
/**
* 函数isZhishu用于判断一个数是否为质数。
*
* @param num 需要判断的数字。
* @returns 布尔值,如果num是质数则返回true,否则返回false。
*/
function isZhishu(num: number): boolean {
// 1不是质数,直接返回false
if(num == 1) return false
// 2和3是质数,直接返回true
if(num <= 3) return true
// 从2开始遍历到num的平方根,检查是否有能整除num的数
for(let i = 2; i * i <= num; i++){
// 如果找到能整除num的数,则num不是质数,返回false
if(num % i == 0) return false
}
// 如果遍历完成后没有找到能整除num的数,则num是质数,返回true
return true
}
// 使用filter方法筛选出数组trees中的质数
let arr = trees.filter(isZhishu)
// 对筛选出的质数数组进行升序排序
arr.sort((a, b) => a - b)
// 返回排序后的质数数组
return arr
}
查看9道真题和解析