首页 > 试题广场 >

素数判定

[编程题]素数判定
  • 热度指数:19631 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 64M,其他语言128M
  • 算法知识视频讲解
给定一个数n,要求判断其是否为素数(0,1,负数都是非素数)。

输入描述:
测试数据有多组,每组输入一个数n。


输出描述:
对于每组输入,若是素数则输出yes,否则输入no。
示例1

输入

13

输出

yes
import java.util.Scanner;
public class Main{
    public static void main(String[] args){
        int n = new Scanner(System.in).nextInt();
        System.out.print(judge(n));
    }
    public static String judge(int n){
        if(0 == n || 1==n || 0 >n){
            return "no";
        }
        for(int i=2;i<=n/2;i++){
            if(0 == n%i){
                return "no";
            }
        }
        return "yes";
    }
}

发表于 2018-08-03 02:02:51 回复(0)

没预料到会将1作为测试用例
还以为2是最小的素数已然成为共识
于是随便改了下就加了个等于等于1的条件进去了,AC了就没改了
当然最好是小于等于1都应该返回false,而且也保证了完整性,基本照顾到所有输入情况
毕竟素数首先得是自然数,是大于等于2的数
2是最小的素数!

import java.util.Scanner;
/**
 * @author Allen_Hua
 * @create_time 创建时间:May 12, 2018 9:00:25 PM 类说明
 */
public class Main {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        while (scan.hasNext()) {
            int n = scan.nextInt();
            if (judge(n)) {
                System.out.println("yes");
            } else {
                System.out.println("no");
            }
        }
    }
    private static boolean judge(int n) {
        // TODO Auto-generated method stub
        if (n == 1) {
            return false;
        }
        for (int i = 2; i <= Math.sqrt(n); i++) {
            if (n % i == 0) {
                return false;
            }
        }
        return true;
    }
}
编辑于 2018-05-12 21:09:16 回复(0)

问题信息

难度:
2条回答 9046浏览

热门推荐

通过挑战的用户

查看代码