Skip to content

Instantly share code, notes, and snippets.

@Happsson
Created October 26, 2014 09:33
Show Gist options
  • Select an option

  • Save Happsson/39322ac88e54dcd7c943 to your computer and use it in GitHub Desktop.

Select an option

Save Happsson/39322ac88e54dcd7c943 to your computer and use it in GitHub Desktop.
Prime-hittare
package math;
import java.util.ArrayList;
/**
* Hittar primtal.
* Kollar bara ojämna tal, jämför genom att kolla om talet som ska undersökas är delbart med tidigare hittade primtal.
* Om ja är det inte ett primtal. Om nej måste det vara det.
* Kollar också om talets komponenter summeras till 3, om så kan det inte vara ett primtal.
* Kollar bara tal som inte slutar på 5.
* Kollar bara delbarhet mot primtal som är mindre än roten ur det tal vi vill undersöka.
*
* @author hannespa
*
*/
public class Upg6 {
public final static int PRIMES_TO_CALCULATE = 100000;
public static void main(String[] args){
ArrayList<Integer> primes = new ArrayList<Integer>();
primes.add(3);
primes.add(5);
int nextCheck = 5;
long timeCheck = System.currentTimeMillis();
while(primes.size()<PRIMES_TO_CALCULATE-1){
nextCheck=nextCheck+2;
if(quickChecks(nextCheck) && nextCheck%10!=5){
boolean wasPrime = true;
checkloop:
for(int i = 0; i < Math.round(Math.sqrt(nextCheck))-1; i++){
if(nextCheck%primes.get(i)==0){
wasPrime = false;
break checkloop;
}
}
if(wasPrime) primes.add(nextCheck);
}
}
System.out.println("Took me 'bout " + (System.currentTimeMillis()-timeCheck)/1000f +
" seconds to find " + (primes.size()+1)+ " primes. " +
"Last prime was " + primes.get(primes.size()-1));
}
/**
* Kollar om talets delar adderas till 3.
* Kallar på sig själv vid behov.
*
* @param nextCheckG talet som ska kollas
* @return huruvida dess komponenter INTE adderas till 3.
*/
private static boolean quickChecks(int nextCheckG) {
String str = String.valueOf(nextCheckG);
int added = 0;
for(int i = 0; i < str.length(); i++){
int add = str.charAt(i)-48;
added = added + add;
}
if(added>10) return quickChecks(added);
if(added == 3){
return false;
}else{
return true;
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment