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

如何解决在1到100之间找到最小素数的问题,我得到了运行时错误

马祺
2023-03-14

我试图通过将最小素数(p)与一组不同的(n)自然数相除,其中(q)是最小自然数,剩余数应该是q,但不知何故,它最终出现了运行时错误。

限制条件是1

我的代码不好,希望能修好。。

Example 1:

输入(n):3 4 5 1

输出(q):61

说明:

这里n 1个数是3,4,5和1,其中q=1(是最小自然数)。

最小的数字是1,剩下的1除以3,4和5是61,是素数。因此输出是61。

Example 2:

输入(n):3 4 5 2

输出(p):无

说明:

这里q=2。被4除后剩下2的任何数字必须是偶数,例如6、10、14等。

因此它不可能是素数。

因此,输出为None

这是我的代码:

import java.util.*;
public class PrimeConstruction{
  public static void main(String [] args){
    Scanner scan = new Scanner(System.in);
    int[] n = new int[11];
    String temp1 = new String();
    int q,temp = 0,p,i=1;
    for(i=1;i<n.length;i++){
      n[i]=scan.nextInt();
      if(temp>n[i]){
        temp=n[i];
      }
      else{
        q=n[i];
      }
    }
    for(p=3;p<100;p++){
      if(i>1){
        while(i<(int)n.length){
          if(n[i]% p == q){
           System.out.println(p);
        }
        else if(n[i]%p == 0){
          System.out.println("None");
          }
          i++;
        }
      }
    }
  }
}

共有1个答案

燕雨石
2023-03-14

你的代码有点杂乱无章。如果将其分解为多个方法,它将简化该过程,并使调试变得更容易。但不要在测试阶段提示输入。硬编码要测试的整数数组。

我建议写两种方法。

>

  • 第一种方法(例如,isPrime)是确定一个值是否为素数。关于如何计算素数,这个网站上有很多很好的答案。搜索一下。

    然后将最小素数初始化为整数。最大值

    第二种方法只需使用候选者调用第一种方法,并执行以下操作:

    • 如果isPrime方法返回true,
      • 把它和最小的素数比较一下
      • 如果较小,则指定最小素数,否则忽略

      当你完成后,你将有最小的素数,或整数。MAX_VALUE如果没有发现素数。

      通过将代码分解成方法,你可以一次只关注一件事。isPrime方法将是这两种方法中比较复杂的一种。确保使用打印语句来帮助调试过程。

      这里有一些需要考虑的事情。

      • 要检查N是否为素数,只需检查2sqrt(N)的除数余数

      你可能想用埃拉托斯烯筛来代替寻找素数。

  •  类似资料:
    • 我有一个任务需要完成:

    • 本文向大家介绍解决android.support.v4.content.FileProvide找不到的问题,包括了解决android.support.v4.content.FileProvide找不到的问题的使用技巧和注意事项,需要的朋友参考一下 在AndroidManifest.xml中加入下面这段话后, 在Android4.4.2版本的手机出现了下面的错误提示 解决方案: 第一:可能是添加Mu

    • 问题内容: 是什么会导致将jar成功添加到Eclipse Java项目中,然后在运行时找不到带有ClassNotFound异常的该jar中的某些类? 问题答案: 运行时的CLASSPATH变量设置可能不正确,或者您错过了向jar文件中添加某些类的操作。

    • 我正在用java制作一个tic-tac-toe游戏,作为家庭作业。我有一个名为TicTacToe的父类和一个名为humanVsHuman的派生类。 下面的方法是在派生类中编写的。它提示用户输入他们想要输入游戏棋子的位置(X或O),然后从父类中调用两个方法:一个将X或O存储在名为setGb()的多功能数组中,另一个用名为displayBoard()的新棋子显示棋盘。 方法如下: 我收到以下运行时错误

    • 我试图通过命令行运行测试,我使用了以下命令:实际上我的操作系统是linux ubuntu,我使用了命令:java-cp"lib/*: bin"org.testng.TestNGtestng.xml

    • 给定一个整数数组,其中每个元素表示可以从该元素向前执行的最大步数。编写一个函数,返回到达数组末尾(从第一个元素开始)的最小跳转次数。如果元素为0,则无法在该元素中移动。 输入: arr[] = { 1, 3, 5, 8, 9, 2, 6, 7, 6, 8, 9} 输出: 3(1- 发现了从动态规划方法到其他线性方法的多种方法。我无法理解所谓的时间线性方法。这里是一个链接,其中提出了一种线性方法。