Programming
Need to run this program in less than a minute: hailstone sequence

Question Description

I’m stuck on a Programming question and need an explanation.

I'm trying to make my code run in less than a minute. 

The problem:

n is an element of 1 to 100,000,000 inclusive. print the number and the largest value reached in the hailstone sequence for n only if that largest value exceeds n^2

the 1st 4 lines of OP are
3 16
7 52
27 9232
31 9232

hailstone sequence: if the 1st # is odd, the following # is 3n+1
if it is even, the following # is n\2
the sequence stops at 1

my code which runs in about 3 minutes:

import java.util.*;

public class Mainn

{

public static void main(String[] args)

int count = 0; 

int number = 2; 

ArrayList <Integer> a = new ArrayList();

while(count < 1000000)

{

int c=0; 

for(int i = 2; i <= Math.sqrt(number) ; i++)

if (number%i == 0)

c=1;

break;

}

}

if(c==0)

a.add(number);

count++;

number++;

}//end of while 

System.out.println(a.get(a.size()-1)); 

long startTime = System.currentTimeMillis();

        long total = 0;

        for (int i = 0; i < 1000000; i++)

        {

            total += i;

    }

        long endTime = System.currentTimeMillis();

        System.out.println("Runtime = " + (endTime-startTime) + " milliseconds");

} //end of main 

}


Student has agreed that all tutoring, explanations, and answers provided by the tutor will be used to help in the learning process and in accordance with Studypool's honor code & terms of service.

This question has not been answered.

Create a free account to get help with this and any other question!