[英]Check whether the given number is prime or not?
我正在嘗試實現一個代碼來檢查給定的數字數組是否是素數,
但是當數字不是質數時,output 會顯示“Prime”和“Not Prime”兩個答案。 我在這里犯了什么錯誤,很高興得到你的回答? 先感謝您!
這是我的代碼。
Scanner scan = new Scanner(System.in);
int number = scan.nextInt();
int[] arr = new int[number];
for (int i = 0; i < number; i++) {
arr[i] = scan.nextInt();
}
for (int i = 0; i < number; i++) {
int num = arr[i];
for (int j = 2; j <= Math.sqrt(num); j++) {
if (num % j == 0 && num !=2) {
System.out.println(num + "Not prime");
break;
}
}
System.out.println(num +"Prime");
}
如果您有興趣使您的代碼更有效率,您可以 go 這條路線。
int[] numbers = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
15, 16, 17, 18, 19, 20 };
for (int num : numbers) {
System.out.println(num + ((isPrime(num) ? " is" : " is not") + " a prime"));
}
private static boolean isPrime(int num) {
// two is a prime
if (num == 2) {
return true;
}
// numbers 1 or less or any even
// number (sans 2) are not primes
if (num <= 1 || num % 2 == 0) {
return false;
}
// Now you can check for odd divisors.
// and increment by 2 starting with 3.
for (int i = 3; i <= Math.sqrt(num); i+=2) {
if (num % i == 0) {
return false;
}
}
return true;
}
你應該記住這個數字是否是素數。 您的代碼沒有這樣做,因此可以達到兩個打印件。
Scanner scan = new Scanner(System.in);
int number = scan.nextInt();
int[] arr = new int[number];
for (int i = 0; i < number; i++) {
arr[i] = scan.nextInt();
}
for (int i = 0; i < number; i++) {
int num = arr[i];
boolean isPrime = true;
for (int j = 2; j <= Math.sqrt(num); j++) {
if (num % j == 0 && num !=2) {
isPrime = false;
break;
}
}
if (isPrime) {
System.out.println(num +"Prime");
} else {
System.out.println(num + "Not prime");
}
}
使用 boolean 跟蹤數字是否為質數。 假設它開始為真(素數),如果發現它不是素數,則將其設置為假。
boolean isPrime = true;
然后,根據該 boolean 確定消息。
String message = isPrime ? "Prime" : "Not prime";
例如,您可以通過引入 boolean 變量來修復它:
for (int i = 0; i < number; i++) {
int num = arr[i];
boolean isPrime = true;
for (int j = 2; j <= Math.sqrt(num); j++) {
if (num % j == 0 && num !=2) {
isPrime = false;
break;
}
}
if (isPrime) {
System.out.println(num +"Prime");
} else {
System.out.println(num + "Not prime");
}
}
public class A{
public static void main(String[] x) {
Scanner scan=new Scanner(System.in);
System.out.print("enter the no:");
int n = scan.nextInt();
if(n<=1) {
System.out.print("not prime");
}
else if(n==2||n%2!=0){
System.out.print("prime");
}else {
System.out.print("not prime");
}
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.