Сегодня хотелось бы рассмотреть два алгоритма на java. Первая программа ищет простые числа методом Решета Эратосфена. Код можно посмотреть тут:
Второй алгоритм ищет два рендомных числа больше 5000000 до 10000000.
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package primenumbers;
import java.util.ArrayList;
import java.util.List;
/**
*
* @author javamain
*/
public class PrimeNumbers {
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
// TODO code application logic here
int n = Math.abs( 100 );
List<Boolean> sieve=new ArrayList<Boolean>();
for( int i = 0; i <= n; i++ )
sieve.add(Boolean.TRUE);
for( int i = 2; i <= n; i++ )
for( int k = i + 1; k <= n; k++ )
if( k % i == 0 )
sieve.set(k, Boolean.FALSE);
for(int i=2 ; i<n ; i++)
{
if( sieve.get( i ) == true)
System.out.println( (new Integer(i)).toString()+"\n");
}
}
}
Второй алгоритм ищет два рендомных числа больше 5000000 до 10000000.
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package pkg2bignumber;
import java.util.Random;
/**
*
* @author javamain
*/
public class Main {
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
// TODO code application logic here
Random rand=new Random();
double number,number2;
for(int i=0; i<5000000; i++){
number = Math.round(rand.nextDouble()*5000000)+5000000;
number2 = Math.round(rand.nextDouble()*5000000)+5000000;
System.out.println(((Double)number).toString()+" "+((Double)number2).toString()+"\n");
}
}
}
Комментарии (20)
Mgrin
12.11.2015 20:32+4Ко всему прочему, не Simple Numbers, а Prime Numbers. Но вообще мне тоже интересно, что это и зачем оно тут?
barker
12.11.2015 20:39+8Второй алгоритм более эпичный, я считаю.
javamain
12.11.2015 20:41-5А вот я бы сказал, что очень сложно подобрать к первому редомному числу еще и второе рендомное число перебором.
Valle
13.11.2015 06:46Зато у первого прекрасная преамбула.
int n = Math.abs( 100 ); List<Boolean> sieve=new ArrayList<Boolean>();
Это же просто прелестно!
zagayevskiy
12.11.2015 20:50+2Ну раз пошла такая пьянка, то немного сумасшествия:
Given three integers K, L and R return the number of integers between L and R that have exactly K divisors.
Задача была минимизировать число символов (имя метода задано, непечатные символы не в счёт). Ну и ограничения по времения, а посему a — решето Эратосфена. *crazy*
int r, y = 1, h, p = 1, l = 1, a[]; int OddDivNum(int K, int L, int R) { ? for (; ++l * l < L;); for (; y * y++ < R;); a = new int[y]; ? for (; (L = ++p * p) < y;) for (; a[p] == 0 && L < y; L += p) a[L] = 1; ? for (; (h = l) * l <= R; ++l, r += y == K ? 1 : 0) for (p = y = 1; p++ <= h;) if (a[p] == 0) for (L = y*2; h % p == 0; h /= p, y += L); ? return r; }
vvovas
13.11.2015 06:05+2Второй алгоритм ищет два рендомных числа больше 5000000 до 10000000.
Он этого не делает. Он 5 млн. раз выводит 2 случайных числа.
Как говорится:
Вот так, с помощью нехитрых приспособлений буханку белого (или черного) хлеба можно превратить в троллейбус. НО ЗАЧЕМ?!
GORKOFF
Простите, но что это?
javamain
Два алгоритма которые я сегодня отстрочил, habr же не резиновый, и я решил запостить именно тут.
MiXei4
Это какой-то троллинг? Видимо настолько тонкий, что никто не понял о чём он.
vasachi
«Тут» как раз хабр…