当前位置: 首页 > 知识库问答 >
问题:

同时扫描几个整数,检查它们是否素数

林俊英
2023-03-14

简而言之,我再次在网上找到了这个任务:

从键盘上输入整数,检查是否是质数。当你输入0时,程序结束。

到目前为止,我编写了检查整数是否为素数的逻辑。主要的问题是,我应该从一个字符串中读取几个整数,如果最后一个整数是0,就停止程序。所以,当我尝试添加循环来迭代输入并检查它们是否为整数素数时,我的逻辑不起作用,它只返回1个整数,没有其他整数。如果您有任何建议或批评,我将不胜感激,谢谢。

import java.util.Scanner;

public
class PrimeNumber
{

public
    static void main(String[] args)
    {
        int temp;
        boolean isPrime = true;
        Scanner sc = new Scanner(System.in);
        int num = sc.nextInt();
        int[] arr = new int[num];
        for (int i = 0; i < arr.length; i++)
        {
            arr[i] = sc.nextInt();

            for (int y = 2; y <= num / 2; i++)
            {
                temp = num % i;
                if (temp == 0)
                {
                    isPrime = false;
                    break;
                }
            }
        }

        if (isPrime)
            System.out.println(num + " is a Prime Number");
        else
            System.out.println(num + " is not a Prime Number");
    }
}

共有3个答案

闻人业
2023-03-14

你的思维过程很好。

首先,划分int值并不理想,因此将arr[]更改为数组。

在最后一段代码中,if-elseprintln()调用printnum的值,它在代码中只是用户将键入的int值的数量(基本上是arr.length-1)。它也在for循环之外,因此只会发生一次。让我们将num重命名为numberOfInts

如果所讨论的intarr[i])可被1arr[i]以外的数整除,则它不是素数。此外,如果它等于01,则它也不是素数。

最后,确保isPrime重置为true

我建议以println()的形式添加说明,这样就更清晰了:

public static void main(String[] args)
    {
        int temp;
        boolean isPrime;
        Scanner sc = new Scanner(System.in);
        System.out.print("Number of integer values: ");
        int numberOfInts = sc.nextInt();
        int[] arr = new int[numberOfInts];
        for (int i = 0; i < arr.length; i++)
        {
            isPrime = true;
            System.out.print("Int " + (i+1) + " = ");
            arr[i] = sc.nextInt();
            for (int y = 2; y <= arr[i] - 1; y++)
            {
                temp = arr[i] % y;
                if (temp == 0 || arr[i] == 0 || arr[i] == 1)
                {
                    isPrime = false;
                    break;
                }
            }
            System.out.println("attempts: " + temp);
            
            if (isPrime)
                System.out.println(arr[i] + " is a Prime Number");
            else
                System.out.println(arr[i] + " is not a Prime Number");
        }
        
    }

至于退出程序,请将其放在更大的for循环的开头:

if (arr[i] == 0) {
    break;
}
微生毅
2023-03-14

您可以尝试使用此函数检查数字是否为素数:

  private static boolean isPrime(int number) {
      return java.math.BigInteger.valueOf(number).isProbablePrime((int) Math.log(number));
  }

然后你可以遍历数组,用这个函数检查它的每个元素

我的程序版本:

  public class Main {
    public static void main(String[] args) {
      try(java.util.Scanner sc = new java.util.Scanner(System.in)) { //use try-with-resources block to avoid resources leak
        //filling an array
        int[] ints = new int[sc.nextInt()];
        //if program gets 0, it stops filling
        for(int i = 0; i < ints.length; i++) {
            int temp = sc.nextInt();
            if(temp == 0) break;
            ints[i] = temp;
        }
        //check
        for(int i = 0; i < ints.length; i++) 
          if(ints[i] != 0) System.out.printf("%s is%s a prime number.\n", ints[i], isPrime(ints[i]) ? "" : "n't");
    }
  }
     
  private static boolean isPrime(int number) { //Some maths
    return java.math.BigInteger.valueOf(number).isProbablePrime((int) Math.log(number));
    }
  }
纪实
2023-03-14

我建议您检查一下这个链接:检查int是否是prime Java

编写一个布尔函数,检查整数是否为素数。您不需要从输入框中创建O N^2算法。

第一步:检查一个整数,看它是否返回true(表示它是素数)

第二步:尝试随机数,看看它们是否也有效。

第3步:添加一个数组,看看数组的内容是否有素数。然后你可以打印出任何你喜欢的信息。

请参阅同一参考资料中的此示例以开始。https://onecompiler.com/java/3y2cxy9ea

 类似资料:
  • 简而言之,我再次在网上找到了这个任务: 从键盘上输入整数,检查是否是质数。当你输入0时,程序结束。 到目前为止,我编写了检查整数是否为素数的逻辑。主要的障碍是,我应该从一个字符串中读取几个整数,如果最后一个整数是0,则停止程序。因此,当我试图添加一个循环来迭代输入并检查整数是否为素数时,我的逻辑不起作用,它只返回1个整数,没有其他整数。

  • 我正在尝试创建一个简单的程序来验证用户的输入是否为正整数。但是,在使用Scanner.hasNextInt()方法时遇到了一个问题。如果输入包含一个整数,比如“5个6”,我的程序将把6读入为一个整数。但是,我希望这样的语句无效,并提示用户只需要输入一个整数值。因此程序将输出“请输入整数值:”。 这就是我的程序的样子: 编辑:我理解next()与nextLine()之间的区别。然而,我的问题是实际仅

  • 问题内容: 以编程方式检查PDF文件是否被完全扫描的最佳方法是什么?我确实可以使用iText和PDFBox。我可以检查pdf文件是否包含文本,并根据结果确定该文件是否为OCRed,但是此解决方案并非100%准确。我想知道是否还有另一种方法来解决这个问题。 如您所知,解决方案必须基于Java。 问题答案: 最好的选择是检查它是否包含文本,还查看它是否包含大的页面化图像或覆盖页面的大量平铺图像。如果您

  • 问题内容: 如何检查Java整数是否为另一个数字的倍数?例如,if 是4的倍数。 问题答案: 使用余数运算符(也称为模运算符),该运算符返回除法的余数,并检查其是否为零:

  • 在分离标记之前,我试图检查扫描仪是否有多个标记。我目前正在尝试使用扫描仪。hasNext()(我的扫描仪的名字是sc)。如果用户输入“string int”,那么我不想打印“enter age”或“enter grade” 目前,无论输入是什么,我的程序都会跳过if语句。如果我把它拿走!然后,即使输入是一行,这些行也会打印出来。他们似乎也打印后,下一个是我发现奇怪的。我将非常感谢您的帮助!