在java中使用while循环查找素数
我想找到素数。它将在java中使用while循环查找素数,java,loops,while-loop,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; } els
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++;
}
}
public void isPrime(int n){
int i=2;
而(i问题在于,您在第一次检查时就打破了循环:您除以2,然后仅根据该值报告答案
重新构造循环,使“它是一个素数”的决定延迟,直到您完全通过循环。您可能需要为此设置一个布尔变量
另外,我建议使用for循环,因为您知道迭代的最大次数。请注意,您不必转到n-1,只需转到sqrt(n)。语句I++
无法访问,因此您不希望else{…}
包含break
。相反,您只希望else I++
“is prime”语句位于循环之外,因为在循环检查完所有除数之前,您不知道n
is prime
您不希望在if
中中断;您希望返回
,否则它将打印“is prime”
另外,你可以让while说while(i
来减少迭代次数(想想看)
编辑
您可能希望使用返回类型布尔值
而不是打印消息,如果有除数,则输入返回false
,如果没有除数,则输入返回true
。如果您的数字是素数或非素数,则此方法将返回布尔值。在for循环中,您可以看到我们首先测试2。如果我们的数字不是除数我们不需要测试任何偶数。这是一种非常有效的测试素数的方法
boolean isPrime(int n) {
for(int i=2;2*i<n;i++) {
if(n%i==0)
return false;
}
return true;
}
布尔isPrime(int n){
对于(int i=2;2*ipublic void isPrime(int n){
如果(n%2==0){
System.out.println(“它不是质数”);
返回;
}
否则{
int i=3;
而(i//import java.util.*;
导入java.util.Scanner;
类素数
{公共静态void main(字符串参数[])
{int no,flag=0,a,b;
扫描仪sc=新的扫描仪(System.in);
System.out.println(“输入任何编号”);
否=sc.nextInt();
a=1;
而(a1)
{
如果(a%b==0)
{flag=1;
打破
}
b++;
}
如果(标志==0)
{System.out.println(“素数”+a);
}
其他的
{System.out.println(“非素数”+a);
}
a++;
}
}
}
这是素数的代码
import java.util.Scanner;
public class JavaPrimeNumber
{
public static void main(String[] args)
{
boolean checkPrime = true;
Scanner sc = new Scanner(System.in);
System.out.println("Enter any number find prime number in java : ");
int number = sc.nextInt();
int a = 2;
while(a <= number / 2)
{
if(number % a == 0)
{
checkPrime = false;
break;
}
a++;
}
if(checkPrime)
System.out.println(number + " is a prime number.");
else
System.out.println(number + " is not a prime number.");
sc.close();
}
}
import java.util.Scanner;
公共类素数
{
公共静态void main(字符串[]args)
{
布尔值checkPrime=true;
扫描仪sc=新的扫描仪(System.in);
println(“输入任何数字,在java中查找素数:”);
int number=sc.nextInt();
INTA=2;
而
//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++;
}
}
}
import java.util.Scanner;
public class JavaPrimeNumber
{
public static void main(String[] args)
{
boolean checkPrime = true;
Scanner sc = new Scanner(System.in);
System.out.println("Enter any number find prime number in java : ");
int number = sc.nextInt();
int a = 2;
while(a <= number / 2)
{
if(number % a == 0)
{
checkPrime = false;
break;
}
a++;
}
if(checkPrime)
System.out.println(number + " is a prime number.");
else
System.out.println(number + " is not a prime number.");
sc.close();
}
}