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

如果值为素数,则打印1或0

上官高畅
2023-03-14

使用面向对象的原理用java编写一个程序来检查一个数字是否为素数。如果为素数,则打印1如果为假,则打印0如果给定值小于或等于1,则打印-1。从用户那里获取值?

当我给出一位数的值时,它起作用,但当我给出两位数的值时,它不起作用

import java.util.Scanner;

class Prime1 {
int n;
Prime1 (int n)
{
    this.n=n;
}
boolean isPrime()
{
    if(n==2)
    {
        System.out.println("1");
        return true;
       
    }
    else if (n%2==0)
    {
        System.out.println("0");
        return false;
    }
    for (int i = 3;i<=Math.sqrt(n);i+=2)
    {
        if(n%i==0)
        System.out.println("0");
        return false;
    }
    System.out.println("1");
    return true;

}
}


class CheckPrime
{
public static void main(String[] args) 
{
    System.out.print("Enter a number you want to check :: ");
    Scanner scan = new Scanner(System.in);
    int num1 = scan.nextInt();
    scan.close();
    Prime1 obj = new Prime1(num1);
    if(num1<=1)
    {
        System.out.print("-1");
    }        
    else
    {
        obj.isPrime();

    }
}
}

共有1个答案

吴兴国
2023-03-14

将for循环更改为

  for (int i = 3;i<=Math.sqrt(n);i+=2)
{
    if(n%i==0)
    {
      System.out.println("0");
      return false;
     }
}

你忘了在if后面加上花括号,结果for循环只运行了一次!

 类似资料:
  • 问题内容: 执行此操作后(幕后)会发生什么? 也就是说,当变量在一个语句中后增加并分配给它自己时?我编译并执行了这个。 即使整个陈述之后仍然是7 。在我的书中,它说是递增的! __ 问题答案: 确实增加了。但是,您正在将back 的旧值分配给自身。 递增并返回其旧值。 将旧值分配回自己。 因此,最后将其分配回其初始值。

  • 问题内容: 使用Sql Server2012。我有一个存储过程,它的一部分检查用户名是否在表中。如果是,则返回1,否则返回2。这是我的代码: 但是,我一直收到以下错误: ‘1’附近的语法不正确。 使用IF EXIST甚至可以做到吗? 问候 问题答案: 如果您想这样做,那么这就是您要遵循的语法。 您不一定严格要求这些语句,但是最好是从一开始就养成这种习惯。

  • 上面的片段结果是x=1,y=10,z=3,请解释这段代码。提前致谢

  • 然而,试图创建一个最多4人的组时,具有相同ID的人不能在同一个组中,例如“Tim ID1、Josh ID2、Ben ID3、George ID4”,这将是一个罚款,但“James ID2”不能加入该组,因为Josh已经在其中了。 我不明白为什么这种方法不起作用,任何帮助都将不胜感激。

  • 我正在使用Pycharm并试图将文本打印到控制台 最终打印命令('

  • 如果值为空,则需要在单元格中显示一个不间断的空格。这是我的模板: 我试过这个,但不管用: 它返回值的问题是: 如果许可证号带有值,则单元格为空,行颜色如下所示。 利用卢库马的建议,它表明了这一点: 更改筛选器中的if语句后,仍然不显示非值: