1

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

The Cat
  • 2,375
  • 6
  • 25
  • 37
inzikind
  • 31
  • 5

2 Answers2

3

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).

Elemental
  • 7,365
  • 2
  • 28
  • 33
0
    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");
}
}
David William
  • 101
  • 2
  • 5