Считаете, что Ubuntu недостаточно дружелюбна к новичкам? Помогите создать новое Руководство для новичков!
0 Пользователей и 1 Гость просматривают эту тему.
Заметил странную вещь — и 64-битные вариантыы 1-й версии и последней версии программ исполняются в два раза медленнее, нежели 32-битные. Почему так? Для компиляции 32-битной версии использую ключ -m32.
Señor_Gaga, да он не на экран, а в файл выводит
Señor_Gaga, не мудри... у него один printf("%lu\n",i)
$ time ./primepower32 2 100000 3 > /dev/nullreal 0m1.699suser 0m1.528ssys 0m0.008s$ time ./primepower64 2 100000 3 > /dev/nullreal 0m3.894suser 0m3.380ssys 0m0.004s
#include <stdio.h>#include <stdbool.h>unsigned long power;bool checkpower(unsigned long numb) { unsigned long i = 2; unsigned long k = (numb / 2); unsigned long divnumb = 2; for (i = 2; i < k; i++) { if (numb % i == 0) { divnumb++; k = numb / i; if (k > i) divnumb++; if (divnumb > power) return false; } } return (divnumb == power);}main(int argc, char *argv[]) { unsigned long i; unsigned long max = atol(argv[2]); power = atol(argv[3]); for (i = atol(argv[1]); i < max; i++) { if (checkpower(i)) printf("%lu\n",i); } return 0;}
start=1000000 max=1100000 power=2 (простые числа, просчёт 100000 чисел)Начальный код: real 8m12.566s (492,566s)Последний код: real 0m23.770sОптимиз. код: real 0m0.140s
start=4294867295 max=4294967295 power=2 (простые числа, просчёт 100000 чисел)real 0m4.305suser 0m4.297ssys 0m0.012s
Страница сгенерирована за 0.019 секунд. Запросов: 21.