首页 > 解决方案 > 问题是 - 如何检查一个数字是否是素数

问题描述

问题

  1. 您必须检查给定数字是否为质数。
  2. 取一个数字“t”作为输入,表示要测试的输入数字的计数。
  3. 将数字“n”作为输入“t”的次数。
  4. 对于 n 的每个输入值,如果数字是素数,则打印“素数”,否则打印“非素数”。

输入格式 A number t A number n A number n .. t 次数

输出格式 prime not prime not prime .. t 次

约束 1 <= t <= 10000 2 <= n < 10^9

样本输入 5 19 21 33 37 121

样本输出 素数非素数非素数素数非素数

我究竟做错了什么?程序输入正常,但结果却一次又一次地变化。输出对于某些输入是正确的,但对于其他一些输入是错误的?我错过了什么??


    import java.util.*;
    
    public class Main {
    
        public static void main(String[] args) {
            Scanner scn = new Scanner(System.in);
    
            boolean flag = true;
            int t = scn.nextInt();
            for (int i = 0; i < t; i++) {
                int n = scn.nextInt();
                for (int k = 2; k * k <= n; k++) {
                    if (n % k == 0) {
                        System.out.println("not prime");
                        flag = false;
                        break;
                    }
                }
                if (flag)
                    System.out.println("prime");
            }
        }
    }

标签: javaloops

解决方案


推荐阅读