inzikind - 7 months ago 26

Java Question

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

Answer Source

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