在java

时间:2015-10-23 22:44:44

标签: java loops while-loop

我想找到素数。它将n除以2(n–1)之间的所有数字,但在某处出错。例如9,它会提供true

感谢任何帮助。

public void isPrime(int n) {

    int i = 2;
    while (i <= (n - 1)) {
        if (n % i == 0) {
            System.out.println("It's not a prime number");
            break;
        } else {
            System.out.println("It's a prime number");
            break;
        }
        i++;
    }
}

6 个答案:

答案 0 :(得分:2)

语句i++无法访问,因此您不希望else{...}包含break。相反,您只需要else i++

你想要“is prime”语句在循环之外,因为在循环完成检查所有除数之前你不知道n是素数。

你不希望break内有if;你想要return,因为否则它会打印“是素数”。

P.S。你可以说同时说while(i < Math.sqrt(n))来减少迭代(考虑一下)。

修改

你可能想要返回类型boolean而不是打印消息,如果有除数则放return false,如果没有除数则放return true

答案 1 :(得分:0)

问题是你在第一次检查时突破了循环:你除以2并仅根据它报告答案。

重组你的循环,以便做出决定&#34;它是一个素数&#34;延迟,直到你完成整个循环。您可能想为此设置一个布尔变量。

另外,我建议使用for循环,因为你知道你迭代的最大次数。请注意,您不必转到n-1,只需转到sqrt(n)。

答案 2 :(得分:0)

如果你的号码是素数,这个方法会返回一个布尔值。在for循环中,您可以看到我们首先测试2.如果我们的数字不能被2整除,那么我们就不必测试任何偶数。这是测试素数的一种非常有效的方法。

   boolean isPrime(int n) {
    for(int i=2;2*i<n;i++) {
        if(n%i==0)
            return false;
    }
    return true;
}

答案 3 :(得分:0)

public void isPrime(int n) {
    if(n % 2 == 0) {
       System.out.println("It is not a prime number");
       return;
    }   
    else {
       int i = 3;
       while(i <= Math.sqrt(n) ) {
           if( (n % i) == 0) {
              System.out.println("It is not a prime number");
              return;
           }
           i = i + 2; 
       }
    }
    System.out.println("It is a prime number");
    return;

}

你可以用这种方式进行while循环,首先要检查是否可以被2整除,如果是,则它不是素数。如果不检查奇数n直到n的平方根。不需要检查是否,如果不能被2整除,它将不会被任何偶数除尽。

答案 4 :(得分:0)

//import java.util.*;
import java.util.Scanner;
class Primenos
{   public static void main(String args[])
    {   int no, flag = 0, a, b;
        Scanner sc = new Scanner(System.in);
        System.out.println("Enter any no: ");
        no = sc.nextInt();
        a=1;
        while(a<=no)
        {
            flag=0;
            b=2;
            while(b<=a>>1)
            {
                if(a%b==0)
                {   flag = 1;
                    break;
                }
                b++;
            }
            if(flag==0)
            {   System.out.println("Prime number" + a);
            }
            else
            {   System.out.println("Not Prime number" + a);
            }
            a++;
        }
    }
}

答案 5 :(得分:0)

这里是素数的代码,

public class Ping 
{
    public long Id { get; set; }
    public long IdDevice { get; set; }
    public string Request { get; set; }
    public string Response { get; set; }
    public int RspCode { get; set; }
    public DateTime CreatedDateTime { get; set; }
}

    public class Device {
    public long Id { get; set; }
    public string Uid { get; set; }
    public Type Type { get; set; }
    public Status Status { get; set; }
}

        protected override void OnModelCreating(DbModelBuilder modelBuilder) {

        modelBuilder.Entity<Device>().HasKey(d => d.Id);
        modelBuilder.Entity<Device>().Property(d => d.Id).HasDatabaseGeneratedOption(DatabaseGeneratedOption.Identity);


        modelBuilder.Entity<Device>().Property(d => d.Uid).HasMaxLength(8);
        modelBuilder.Entity<Device>().HasRequired(d => d.Uid);

        modelBuilder.Entity<Ping>().HasKey(p => p.Id);
        modelBuilder.Entity<Ping>().Property(p => p.Id).HasDatabaseGeneratedOption(DatabaseGeneratedOption.Identity);



        base.OnModelCreating(modelBuilder);
    }