Please help my.Insorrect result.

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • ladislav
    New Member
    • Oct 2006
    • 17

    #1

    Please help my.Insorrect result.

    Please help my.My program is running but print in
    "System.out.pri ntln(firstprime .findPrime ());" isn't
    correct.It prin except string primenumbers some other
    number for example 16 or 64(it isn't primenumbers).
    I thynk that problem is in method "testIsPrim e"
    but I cannot find it.


    /**
    *PrimeNumber.ja va
    *
    *
    *
    * To change this template, choose Tools | Template Manager
    * and open the template in the editor.
    */
    //package TestPrime;
    /**
    *
    * @author lm
    */
    public class PrimeNumber{

    private int numberOf = 1;
    private int numberTo = 100;

    public PrimeNumber() {
    }

    public void setOf(int number) {
    numberOf = number;
    }

    public void setTo(int number) {
    numberTo = number;
    }

    private boolean testIsPrime(int testprime) {
    boolean prime = true;
    for(int k = 3; k < testprime; k++) {//changed here
    if (prime){
    for(int j=2;j<=Math.sqr t(testprime);j+ +) {
    if(testprime%k= =0){
    prime=false;
    break;
    }
    }
    }
    }
    return prime;
    }

    public String isPrime(int testprime) {
    if ( testIsPrime(tes tprime)) {
    return testprime+" is prime";
    }else{
    return testprime+" isn't prime";
    }
    }

    public String findPrime(){
    String s = "";
    for(int j=numberOf;j<= numberTo;j++) {
    if ( testIsPrime(j)) {
    s = s + j+"is primenumber\n";
    }
    }
    return s;

    }

    public static void main(String[] args) {

    PrimeNumber firstprime = new PrimeNumber();

    firstprime.numb erOf = 10;
    firstprime.numb erTo = 40;
    System.out.prin tln(firstprime. findPrime ());
    System.out.prin tln(firstprime. isPrime(4272));
    System.out.prin tln(firstprime. isPrime(3517));
    }
    }
  • r035198x
    MVP
    • Sep 2006
    • 13225

    #2
    Check again. When I run the program below it prints all the primes form 11 to 37 correctly


    Code:
     
    
    /**
    *PrimeNumber.java
    *
    *
    *
    * To change this template, choose Tools | Template Manager
    * and open the template in the editor.
    */
    //package TestPrime;
    /**
    *
    * @author lm
    */
    public class PrimeNumber2{
    
    private int numberOf = 1;
    private int numberTo = 100; 
    
     
    
    public void setOf(int number) {
    numberOf = number;
    }
    
    public void setTo(int number) {
    numberTo = number;
    }
    
    private boolean testIsPrime(int testprime) {
    boolean prime = true;
    for(int k = 3; k < testprime; k++) {//changed here
    if (prime){
    for(int j=2;j<=Math.sqrt(testprime);j++) {
    if(testprime%k==0){
    prime=false;
    break;
    }
    }
    }
    }
    return prime;
    }
    
    public String isPrime(int testprime) {
    if ( testIsPrime(testprime)) {
    return testprime+" is prime";
    }else{
    return testprime+" isn't prime";
    }
    }
    
    public String findPrime(){
    String s = "";
    for(int j=numberOf;j<= numberTo;j++) {
    if ( testIsPrime(j)) {
    s = s + j+"is primenumber\n";
    }
    }
    return s;
    
    }
    
    public static void main(String[] args) {
    
    PrimeNumber2 firstprime = new PrimeNumber2();
    
    firstprime.numberOf = 10;
    firstprime.numberTo = 40;
    System.out.println(firstprime.findPrime ());
    System.out.println(firstprime.isPrime(4272));
    System.out.println(firstprime.isPrime(3517));
    }
    }

    Comment

    • ladislav
      New Member
      • Oct 2006
      • 17

      #3
      Thant you I try it

      Comment

      • r035198x
        MVP
        • Sep 2006
        • 13225

        #4
        Originally posted by ladislav
        Thant you I try it
        Is it working?

        Comment

        • Ganon11
          Recognized Expert Specialist
          • Oct 2006
          • 3651

          #5
          Code:
          private boolean testIsPrime(int testprime) {
              boolean prime = true;
              for(int k = 3; k < testprime; k++) {//changed here
                  if (prime) {
                      for(int j = 2; j <= Math.sqrt(testprime); j++) {
                          if (testprime % k== 0) {
                              prime=false;
                              break;
                          }
                      }
                  }
              }
              return prime;
          }
          In your second if statement, shouldn't you be modding testprime by j, not k? i.e.

          Code:
          private boolean testIsPrime(int testprime) {
              boolean prime = true;
              for(int k = 3; k < testprime; k++) {//changed here
                  if (prime) {
                      for(int j = 2; j <= Math.sqrt(testprime); j++) {
                          if (testprime % j == 0) {
                              prime=false;
                              break;
                          }
                      }
                  }
              }
              return prime;
          }

          Comment

          Working...