Go Back   Armenian Knowledge Base > Technical sections > Languages, Compilers, Interpreters > C/C++

Reply
 
Thread Tools

generate
Old 12.03.2006, 09:10   #1
Младенец
 
Join Date: 03 2006
Location: Tver
Age: 40
Posts: 4
Rep Power: 0
Default generate

не подскажите как в билдере 6 сгенерировать 2 простых числа=)) я новичёк ешё=) не получается что то!

Re: generate
Old 12.03.2006, 10:55   #2
Грустно...
 
Agregat's Avatar
 
Join Date: 08 2002
Location: Там, где всегда идут дожди
Age: 43
Posts: 21,717
Rep Power: 9
Default Re: generate

ну например 3 и 7
а так - rand-ом генеришь числа и проверяешь на простоту... для новичка проще не придумаешь...
__________________
http://аvitya.livejournal.com
Хотели, как лучше, а получилось даже хуже...
Лозунг шахматиста: На каждый шах - ответим матом!

Re: generate
Old 12.03.2006, 11:06   #3
Какое небо, *, Багдад!
 
knightmare's Avatar
 
Join Date: 10 2005
Location: Ереван
Posts: 1,682
Rep Power: 4
Default Re: generate

Ну, например, генерируешь любое число и находишь его наибольший простой делитель.
__________________
мордой об лавку
LISP is the only language that is truly beautiful.
d
.

Хочу трахнуть Nissan Skyline R34, и ездить на Alessandra Ambrosio

Re: generate
Old 12.03.2006, 11:24   #4
Младенец
 
Join Date: 03 2006
Location: Tver
Age: 40
Posts: 4
Rep Power: 0
Default Re: generate

пример можете написать??
есть функция random, но как она работает, и какие аргументы ей писать?

Re: generate
Old 12.03.2006, 11:47   #5
Какое небо, *, Багдад!
 
knightmare's Avatar
 
Join Date: 10 2005
Location: Ереван
Posts: 1,682
Rep Power: 4
Default Re: generate

есть rand()
делаешь два раза по [не проверял]:
---------------
unsigned int i, j;
for(i=j=1+rand(); !(j%i && is_simple(i)); i--);
//имеем нужное в i здесь
---------------
bool is_simple(unsigned int c){
unsigned int i;
for(i=2; i<c && c%i; i++);
return i==c || c==1;
}
---------------
__________________
мордой об лавку
LISP is the only language that is truly beautiful.
d
.

Хочу трахнуть Nissan Skyline R34, и ездить на Alessandra Ambrosio

Last edited by knightmare; 12.03.2006 at 12:19.

Re: generate
Old 12.03.2006, 13:56   #6
Грустно...
 
Agregat's Avatar
 
Join Date: 08 2002
Location: Там, где всегда идут дожди
Age: 43
Posts: 21,717
Rep Power: 9
Default Re: generate

на самом деле цикл надо завешать при i=Sqrt(c), так как если не нашлось, то и не найдется. Но, увы, это не работает для больших чисел
__________________
http://аvitya.livejournal.com
Хотели, как лучше, а получилось даже хуже...
Лозунг шахматиста: На каждый шах - ответим матом!

Old 05.01.2018, 19:03   #7
Ego coder
 
AvDav's Avatar
 
Join Date: 07 2004
Location: Yerevan, Armenia
Age: 44
Posts: 3,738
Rep Power: 5
Default

Насколько больших? Я тут на джаве функцию составил, на ура пашет до миллиона в течение секунды на проверку сотни тысяч.
Больше не пробовал. Вот код:
Code:
public class Main {
    public static boolean isPrime(int n) {
        if(1 <= n && n < 4) return true;
        if(n%2 == 0 || n%3 == 0 || n <=0) return false;
        if((n - 1)%6 == 0 && (n + 1)%6 == 0) return false;
        int r = (int)Math.sqrt(n), f = 5;
        while(f <= r) {
            if(n%f == 0) return false;
            if(n%(f+2) == 0 ) return false;
            f += 6;
        }
        return true;
    }
    public static void main(String[] args) {
        for(int i = 0; i < 1000000; ++i)
            if(isPrime(i)) System.out.printf("The number %d is prime.\n", i);
    }
}
А можно проверять делимость по простым числам. Найти их в не очень большом количестве особого труда не составит. Решето Эратосфена (до корня из n). За 1 секунду находит числа до 10^7 примерно. А дальше перебор делимости (Либо если число уже найдено Эратосфеном, то и перебирать не придётся) на простые числа, если число больше чем 10^7 также до корня из n. И всё довольно просто и быстро
__________________
Каждый сам кузнец своего счастья, и несчастья тоже.

Last edited by AvDav; 05.01.2018 at 19:03.
Reply




Реклама:
реклама
Buy text link .

All times are GMT. The time now is 01:10.
Top

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.