Prime Numbers协助

时间:2014-11-16 21:05:18

标签: java primes

我必须编写代码,这是我到目前为止所做的:

素数是一个只能被自身和I整除的数字。例如, 数字5是素数,因为它可以被均匀地除以1和5.然而,数字6, 不是素数因为它可以被均分为1,2,3和6。 编写一个名为isPrime的方法,它以整数作为参数,如果是则返回true 参数是素数,否则为假。完整演示该方法 程序

这是到目前为止的代码:

package isprime;
import java.util.Scanner;

public class IsPrime {

    public static void main(String[] args) {
        Scanner userInput = new Scanner(System.in);        
        System.out.println("Write a number.");
        int num = userInput.nextInt();
    }

    public static boolean isPrime(int num) {
        int isPrime = num % num; 

        if (isPrime !=0 || isPrime != 1)
            return false;
        else
           return true;
    }
}

现在的问题是我不太了解布尔表达式是如何工作的,所以这就是为什么我做了一个内部方法布尔值,但它不会在内部方法中选择用户数响应。这是我被困的地方。还有一条消息说if是多余的?任何人都可以帮助找到答案,而不是答案本身吗?从长远来看,我不会学习如何做到这一点。

第2部分:

现在我必须将这些素数放入文件中。我知道我必须使用PrintWriter,但我不确定在哪里放置它。另外,如何使用PrintWriter fileName = new PrintWriter(“PrimeNumbers.txt”)创建文件;

这是新创建的代码:

package isprime_final;
import java.io.PrintWriter;
import java.util.Scanner;

public class IsPrime_Final
{
public static void main(String args[]){ 
Scanner fileName = new Scanner(System.in);

System.out.println("Name the file for Prime Number list.");
String primeList = fileName.nextLine();

    for (int isPrime = 0; isPrime <= 100; isPrime++) {
    if (isPrime(isPrime)) {
            PrintWriter PrimeNumbers = new PrintWriter(System.out);
    PrintWriter.println(isPrime);

    }
}
PrintWriter.close();
}
 public static boolean isPrime(int prime) {

if ((prime & 1) == 0) {
    if (prime == 2) { 
 return true;
    } else {
    return false;
    }
}
for (int i = 3; (i * i) <= prime; i += 2) {
    if ((prime % i) == 0) {
    return false;
    }
}
return prime != 1;
}
}

3 个答案:

答案 0 :(得分:3)

int isPrime = num % num; 

这没有任何成就。根据定义,num % num始终为0(请记住a % b是将a除以b)时的余数。

if (isPrime !=0 || isPrime != 1)

由于表达式始终为true,因此无法完成任何操作。你问的是isPrime是否与0不同,与1不同。有三种可能的情况:

  1. isPrime为0. isPrime != 0为false,isPrime != 1为true,整个表达式为true。
  2. isPrime为1. isPrime != 0为真,isPrime != 1为false,整个表达式为真。
  3. isPrime是任何其他值。 isPrime != 0为真,isPrime != 1为真,整个表达式为真。
  4. 首先,你需要的是循环来寻找除数。如果您可以在2num-1之间找到除数num % divisor == 0,那么num就不是素数。如果你找不到,那就是素数。

答案 1 :(得分:2)

您不是从main方法的任何位置调用Boolean方法isPrime。在您阅读用户的响应后,您需要先调用它。其次,你正在做

 num%num

这将永远给你真实。所以它永远不会陷入虚假状态。

希望这会有所帮助

快乐学习:)

答案 2 :(得分:1)

定义了素数as a number only divisible by itself and 1

要确定数字N是否为素数,一种天真的方法是检查该数字是否可被1和N之间的任何数字整除。

public static boolean isPrime (int num) {
    for (int i=2; i<num; i++)
        if (num % i == 0) // num is divisible by i
            return false; // num is not prime.
    return true; // because num passed all tests, num is prime.
}