我正在尝试编写一个程序来检查它是否为素数,如果为true则返回字符串yes,如果为false则返回no。我试图在我的main方法中使用while循环但我执行它时遇到问题。我在void方法中完成了它,并且在我的main方法中调用了该方法,但这不是我想要的。
我希望它在我的main方法中,如果它是素数则返回一个字符串是,如果它不是素数,则返回一个字符串否。有什么想法吗?在下面的方法中查看我的代码。关于如何在我的main方法中转换它以返回yes或no作为字符串的任何想法?
import java.util.Scanner;
public class PrimeNumbers {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
System.out.print("Enter a number: ");
int number = in .nextInt();
isPrime(number);
}
public static 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;
}
}
答案 0 :(得分:0)
嗯,只需复制并粘贴到您的main
方法正文中,然后使用boolean
确定要打印的结果。
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
System.out.print("Enter a number: ");
int number = in.nextInt();
boolean prime = false;
if (number % 2 == 0) {
prime = false;
} else {
int i=3;
while (i<=Math.sqrt(number)) {
if ((number % i) == 0) {
prime = true;
}
i+=2;
}
}
if (prime) {
System.out.println("It is a prime number");
} else {
System.out.println("It is not a prime number");
}
}
答案 1 :(得分:0)
让您的isPrime
方法返回boolean
而不是void
。
public static boolean isPrime(int n) {
if (n % 2 == 0) {
return false;
} else {
int i = 3;
while (i <= Math.sqrt(n)) {
if ((n % i) == 0) {
return false;
}
i = i + 2;
}
}
return true;
}
然后在main
检查
if(isPrime(2)) {
System.out.println("Is a prime number!");
} else {
System.out.println("It is not a prime number!");
}
答案 2 :(得分:0)
我有点不确定你想要的是什么。听起来你想要创建一个返回yes或返回no的函数?如果是这种情况,您可以创建以下算法:
public static String isPrime(int num){
for(int i = 2; i < num; i++) {
if(num % i == 0)
return "No";
}
return "Yes";
}
有关如何优化此算法的详细信息,请参阅here。
然后你可以在main中调用方法:
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
System.out.print("Enter a number: ");
int number = in.nextInt();
System.out.println(isPrime(number));
}
如果您只想在主体内完成所有操作,请执行以下操作:
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
System.out.print("Enter a number: ");
int number = in.nextInt();
boolean b = true;
for(int i = 2; i < num; i++) {
if(num % i == 0){
System.out.println("No");
b = false;
}
}
if(b){
System.out.println(isPrime(number));
}
}
答案 3 :(得分:0)
/**
* Auto Generated Java Class.
*/
public class ConvertingForToWhile {
public static void main(String[] args) {
final int MAX = 66;
boolean isPrime = true;
int j = 2;
while ( j <= MAX/2 && isPrime)
{
if( MAX % j ==0)
{
isPrime = false;
}
j++;
}
System.out.println( MAX + " is Prime? " + isPrime );
}
}
答案 4 :(得分:0)
import java.util.*;
public class Prime
{
public static void main(String[]args)
{
int num;
int count = 0;
int divide = 2;
Scanner kb = new Scanner(System.in);
System.out.println("Enter a number user:");
num = kb.nextInt();
for(int x = 0;x<num;x++)
{
if((num%div)==0)
{
count+=1;
div = div + 1;
}
}
if(count==0)
{
System.out.println(num +" "+ "is a prime number");
}
else
{
System.out.println(num+" " +"is not a prime number");
}
}
}