Skip to content

Instantly share code, notes, and snippets.

@MagallanesFito
Last active June 30, 2019 02:29
Show Gist options
  • Save MagallanesFito/bc5d694a6927e6447018f6854019ed1d to your computer and use it in GitHub Desktop.
Save MagallanesFito/bc5d694a6927e6447018f6854019ed1d to your computer and use it in GitHub Desktop.
public static int[] firstQPrimes(int q) {
/*
* Write your code here.
*/
// Generar primeros q numeros primos con la criba de atkin
//hay 1229 numeros primos entre 1 y 10000
int limit = q;
boolean sieve[] = new boolean[limit];
if(limit > 2) sieve[2] = true;
if(limit > 3) sieve[3] = true;
for(int x=1;x*x<limit;x++){
for(int y=1;y*y<limit;y++){
int n = (4*x*x) + (y*y);
if(n<= limit && (n%12 == 1 || n%12 == 5)){
sieve[n] ^= true;
}
n = (3*x*x) + (y*y);
if(n<=limit && n%12 == 7){
sieve[n] ^= true;
}
n = (3*x*x) - (y*y);
if(x > y && n<=limit && n%12 == 11){
sieve[n] ^= true;
}
}
}
for(int r = 5;r*r < limit;r++){
if(sieve[r]){
for(int i=r*r;i<limit;i+=r*r){
sieve[i] = false;
}
}
}
int l = 1208;
int [] primes = new int[l];
int top = 0;
for(int i=0;i<sieve.length;i++){
if(sieve[i]){
primes[top++] = i;
}
}
return primes;
}
static int[] waiter(int [] number,int q) {
//Genera primeros 1200 primos
int [] primes = firstQPrimes(9800);
int [] finale = new int[number.length];
int top = 0;
boolean orden = true;
for(int i=0;i<q;i++){
if(orden){
for(int j=0;j<number.length;j++){
if(number[j]%primes[i] == 0){
finale[top++] = number[j];
//System.out.println(number[j]);
number[j] = -1;
}
}
}
else{
for(int j=number.length-1;j>=0;j--){
if(number[j]%primes[i] == 0){
finale[top++] = number[j];
//System.out.println(number[j]);
number[j] = -1;
}
}
}
orden ^= true;
}
orden ^= true;
if(orden){
for(int j=0;j<number.length;j++){
if(number[j] != -1){
finale[top++] = number[j];
//System.out.println(number[j]);
}
}
}
else{
for(int j=number.length-1;j>=0;j--){
if(number[j] != -1){
finale[top++] = number[j];
//System.out.println(number[j]);
}
}
}
//number es A_0
return finale;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment