题目
题目链接:
https://www.nowcoder.com/practice/975a263e2ae34a669354e0bd64db9e2a
核心
需要牢牢记住下面的代码
//判断是否为质数
public boolean isPrime(int n){
if(n==1) return false;
if(n==2 || n==3) return true;
if(n%6!=1 && n%6!=5) return false; //不在6的两边肯定不是质数
int sqrt = (int)Math.sqrt(n);
for (int i = 5; i <=sqrt ; i+=6) {
//如果在6的两边,但是n%i==0 或者 n%(i+2)==0 也不是质数
if(n%i==0 || n%(i+2) ==0) return false;
}
return true;
}
参考答案Java
import java.util.*;
public class Solution {
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param trees int整型一维数组
* @return int整型一维数组
*/
public int[] primeFruits (int[] trees) {
List<Integer> list = new ArrayList<>();
for (int i = 0; i < trees.length ; i++) {
int n = trees[i];
if (isPrime(n)) {
list.add(n);
}
}
Collections.sort(list);
int[] ans = new int[list.size()];
for (int i = 0; i < list.size(); i++) {
ans[i] = list.get(i);
}
return ans;
}
//判断是否为质数
public boolean isPrime(int n) {
if (n == 1) return false;
if (n == 2 || n == 3) return true;
if (n % 6 != 1 && n % 6 != 5) return false;
int sqrt = (int)Math.sqrt(n);
for (int i = 5; i <= sqrt ; i += 6) {
if (n % i == 0 || n % (i + 2) == 0) return false;
}
return true;
}
}
参考答案Go
package main
import (
"sort"
"math"
)
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param trees int整型一维数组
* @return int整型一维数组
*/
func primeFruits( trees []int ) []int {
list := []int{}
for _, v := range trees {
if isPrime(v) {
list = append(list, v)
}
}
sort.Ints(list)
return list
}
//判断是否是质数
func isPrime(n int) bool {
if n == 1 {
return false
}
if n == 2 || n == 3 {
return true
}
if n%6 != 1 && n%6 != 5 {
return false
}
sqrt := int(math.Sqrt(float64(n)))
for i := 5; i <= sqrt; i++ {
if n%i == 0 || n%(i+2) == 0 {
return false
}
}
return true
}
参考答案PHP
<?php
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param trees int整型一维数组
* @return int整型一维数组
*/
function primeFruits( $trees )
{
$list = array();
foreach ($trees as $v){
if(isPrime($v)){
$list[count($list)] = $v;
}
}
sort($list);
return $list;
}
//判断$n是否是质数
function isPrime($n){
if($n==2 || $n==3) return true;
if($n==1 ||($n%6!=1 && $n%6!=5)) return false;
$sqrt = intval(sqrt($n));
for($i=5;$i<=$sqrt;$i+=6){
if($n%$i==0 || $n%($i+2) ==0){
return false;
}
}
return true;
}