简体   繁体   中英

Prime Number Java

This is for homework and I have most of it but I feel like my prime number generator is off because when i run it, it only increases the Y value by 5 for 1 and 3 not all the other primes between 1 and 100;

heres the homework question

It's Joen's Birthday and his friends have hidden his gift somewhere in his       house.

Joen begins at the origin: (0,0)

He has to follow 100 commands. The first being command 1, the second being command 2, etc.

Only one of the following can be applied at once.

-If the command number is both prime and odd, he must take 5 steps ahead (up)
-Otherwise if the command number is both prime and even, he must take 3 steps backwards (down)
-Otherwise if the command number is even, he must take one step to the right.
-Otherwise if the command number is odd, he must take one step to the left

The following rule can be applied in addition to another rule
-If the command number is divisible by 7, he must take the quotient number of steps down.

Using a coordinate system, at what point is the gift hidden? Create a program that shows the steps Joen takes to find his hidden gift.

and here is what i have for code

import java.util.*;

public class Party{
public static void main(String[] args) {

    int counterCommand = 1;
    int x = 0;
    int y = 0;
    int temp;
    boolean isPrime=true;
    while (counterCommand <= 100) {
        int num=counterCommand;
        for(int i=2;i<=num/2;i++){
        temp=num%i;
        if(temp==0){
            isPrime=false;
            break;}
        }

        if (isPrime==true){
            if (counterCommand % 2 != 0){
                y = y + 5;
            }
                else {
                    y = y - 3;
                }
            }
            else{
                if (counterCommand % 2 != 0){
                    x = x - 1;
                }
                else{
                    x = x + 1;
                }

            }
            counterCommand = counterCommand + 1;
        }
        System.out.print(x + "," + y);
    }   
}

how ever when i run it, the value for Y is not increasing at any Prime odds that are not one or 3 (5,7,13 ect) Why is that? Because i know that the 1,7 Im getting is not correct

It seems to me that you need to reset isPrime to true inside the loop, at the moment you only set it once, not for each iterator across the numbers.

As a result your test for prime numbers fails after it find the first composite number (4).

    import java.util.Scanner;
public class PrimeNumber {
    public static void main(String[] args){
        System.out.println("Enter a Number");
        Scanner scn = new Scanner(System.in);
        int pr=scn.nextInt();
        int check=0;
        if(pr==2)
        {
        System.out.println("Entered Number is Prime");
        }
        else
        {
            for(int i=2; i<=pr; i++)
        {
            if(pr%i==0)
            {
                if(check==0)
                {
                System.out.println("Entered Number is not Prime");
                break;
                }
            }
            else
            {
                check=check+1;
            }
        }
    }
        if(check>1)
            System.out.println("Entered Number is Prime");
}
}

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM