黑月黄龙 发表于 2022-1-16 15:53:59

不知道问题出在哪

import java.util.Scanner;
//用方法,输出一个大于正整数n的最小质数
public class Homework8 {
        public static void main(String[] args) {
                Scanner s = new Scanner(System.in);
                int n = s.nextInt();
                n++;
                int result = zhiShu(n);
                System.out.println(result);
        }
        public static int zhiShu(int n) {
                for(int i = 2; i < n; i++) {
                        if(n % i == 0) {
                                n++;
                                continue;
                        }
                }
                return n;
        }
}
当我输入23的时候,不知道为什么输出的是27,答案不对,输入其他数字,答案又是对的,求大佬帮我改改

洋洋痒 发表于 2022-1-16 16:44:51

zhiShu方法里n每一次增长1,i都需要从2开始判断,你的代码没有这样

小伤口 发表于 2022-1-16 16:49:43

你的程序只能判断这个数是不是质数,在for循环过程中尽量不要改变影响for循环的变量,这样即不便于理解,
程序也容易出错,这里建议使用两个循环,一个判断是否是质数,一个提供向上加的作用
参考代码
import java.util.Scanner;

public class FamilyAccount {
    public static void main(String[] args) {
      Scanner s = new Scanner(System.in);
      int n = s.nextInt();
      int result = zhiShu(n);
      System.out.println(result);
    }
    public static int zhiShu(int n) {
      boolean log=true;
      while (log) {
            n++;
            for (int i = 2; i <=n; i++) {
                if (n % i == 0&&n!=i) {
                  break;//说明不是质数
                }
                if (n==i){
                  log=false;
                }
            }

      }
      return n;
    }
}

YSW9527 发表于 2022-1-16 23:05:33

如果取余等于0;那么n加1,再来进行计算,而此时的i也还是要从2开始,正是缺少了这个,所以在continue上面加上一条i=1,那么下次for循环开始i要加1变成2,这样就对了

不会起名字的我 发表于 2022-1-20 12:04:32

你写这个程序是为了干什么,我看不懂。。。。。找不出毛病。。。。
页: [1]
查看完整版本: 不知道问题出在哪