Shivam Singh
Shivam Singh

Reputation: 366

Facing problem with the output of this code

My friend gave me this code and i cant seem to find the error in it. I am attaching the code below:

    import java.util.*;
public class prg {
    public static void main(String[] args) {
        int n;
        int count;
        int a=0,b=1;
        int c=0;
        Scanner kb=new Scanner(System.in);
        n=kb.nextInt();
        int ar[]=new int[100];
        ar[1] = 2;
        for(int i=3;i<=n;i+=2)
        {
            count=0;
            for (int j = 2; j < i ;j++ ) {
                if (i % j == 0) {
                    count++;
                    break;
                }
            }
            if(count==0)
            ar[i]=i;
        }

        for(int i=0;i<=n;i+=2)
        {
            a = b;
            b = c;
            c = a + b;
            ar[i]=c;
        }
        for(int i=0;i<14;i++)
            System.out.print(ar[i]+" ");

        }
}

So, the even index is storing the fibonacci series and the odd index is storing prime number.

Problem: the rest of the code is working fine but the 9th index of 'ar' array is printing 0 i dont know why and because of it the output is showing wrong.

Take input n as 14 and check the code please.

Thankyou in advance.

PS: i have solved this question in one other way so i request you to not give answers like 'try my method, its not efficient'. I just want to know what is going wrong at INDEX 9 of the array.

Edited: facing problem with the Prime Number loop.

Upvotes: 1

Views: 74

Answers (2)

bradley101
bradley101

Reputation: 721

9 is not a prime number, so it sets nothing in the array. 0 is the default value so it gets printed.

Upvotes: 1

Sweeper
Sweeper

Reputation: 274500

When i is 9, your code correctly identifies that it is not a prime number, so count is not 0. This causes this line to not run:

ar[i]=i;

And then you increase i by 2 to check the next odd number. This means that you never set index 9 of the array to anything, so it remains at its default value - 0.

To fix this, you should introduce a new variable possiblePrime to keep track of which number you are checking. Increase this variable every iteration of the outer for loop, and increase i only when possiblePRime is prime. Also, change the above line to:

ar[i] = possiblePrime;

Upvotes: 2

Related Questions