我想找到素数。它将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++;
}
}
答案 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);
}