有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java我的一些素数被称为非素数

我不太确定我的代码出了什么问题,似乎大多数事情都很顺利

public static char isPrime(int x)
        {
            char result = 'r';
            for(int y=2;y<x;y++)
            {
                if(x%y==0)
                result = 't';
                else
                result = 'f';
            }
            return result;
        }

共 (2) 个答案

  1. # 1 楼答案

    您总是要到达循环的末尾,因此结果将是x-1

    您需要从result = 't'开始,并中断false值的循环

  2. # 2 楼答案

    试试这个:

    public static boolean isPrime(int x) {
        for (int y = 2; y*y <= x; y++) {
            if (x % y == 0)
                return false;
        }
        return true;
    }
    

    改变了什么:

    • 应该使用布尔值来指示条件为真或假,而不是字符't''f'
    • 代码中最大的问题是,一旦你为你的数字(if (x%y==0))找到一个除数,你就必须打破循环,因为在这一点上,我们确定这个数字不是素数,所以继续下去没有意义
    • 只有在没有找到除数的情况下,我们才能在循环之外的末尾返回true