powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Генератор простых чисел (до 10^9 за 5 сек)
25 сообщений из 402, страница 3 из 17
Генератор простых чисел (до 10^9 за 5 сек)
    #38923131
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Опять же проверить тот сайт ты не можешь. Где гарантия что не врут? Как проверить?
Простое число 4200000037 как бы его точно в квадрат возвести и туда запостить. Везде округленные значения.
...
Рейтинг: 0 / 0
Генератор простых чисел (до 10^9 за 5 сек)
    #38923230
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Проверил умножением. Не врут. Произведение - точное. Правда
проверить на простоту число 271963805968702864258461551790513043662751795453
- это трабл.

Поискал другие сайты - тухляк. На многих факторизатор - игрушечный. Ограничен
диапазоном int32. А один особо отличился. Подвесил мне браузер нахер. Причем
так жёстко что пришлось ребутнуть процесс в taskmanager.

Кажется этот

http://ru.onlinemschool.com/math/assistance/number_theory/multiplier/
...
Рейтинг: 0 / 0
Генератор простых чисел (до 10^9 за 5 сек)
    #38923256
Фотография SashaMercury
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алгоритм Аткина, согласно Аткину, реализован

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
#include <stdio.h>
#include <stdlib.h>
#include <math.h>

#define SIZE 1000000 + 1 //d=[1;SIZE+1)
#define MAGIC_NUM 60

int sqrt_SIZE = (int)sqrt((float)SIZE);

//int divisors0_1[] = { 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 48, 50, 52, 54, 56, 58 };
//int divisors0_2[] = { 3, 9, 15, 21, 27, 33, 39, 45, 51, 57 };
//int divisors0_3[] = { 5, 25, 35, 55 };
int divisors1[] = { 1, 13, 17, 29, 37, 41, 49, 53 };
int divisors2[] = { 7, 19, 31, 43 };
int divisors3[] = { 11, 23, 47, 59 };

int element_belong(int x)
{
	for (int i = 0; i < sizeof(divisors1) / sizeof(divisors1[0]); ++i)	if (divisors1[i] == x) return 1;
	for (int i = 0; i < sizeof(divisors2) / sizeof(divisors2[0]); ++i)	if (divisors2[i] == x) return 2;
	for (int i = 0; i < sizeof(divisors3) / sizeof(divisors3[0]); ++i)	if (divisors3[i] == x) return 3;
	return 0;
}

int main()
{
	static bool* nums = (bool*)calloc(SIZE, sizeof(bool));//all numbers
	nums[2] = true;
	nums[3] = true;
	nums[5] = true;

	int x2 = 0, y2 = 0, n = 0;
	for (int i = 1; i <= sqrt_SIZE; ++i)
	{
		x2 += 2 * i - 1;
		y2 = 0;
		for (int j = 1; j <= sqrt_SIZE; ++j)
		{
			y2 += 2 * j - 1;

			n = 4 * x2 + y2;
			if (n <= SIZE && element_belong(n%MAGIC_NUM) == 1)
				nums[n] = !nums[n];

			n -= x2;
			if (n <= SIZE && element_belong(n%MAGIC_NUM) == 2)
				nums[n] = !nums[n];

			n -= 2 * y2;
			if (n <= SIZE && element_belong(n%MAGIC_NUM) == 3 && i>j)
				nums[n] = !nums[n];
		}
	}

	for (int i = 5; i <= sqrt_SIZE; ++i)
	{
		if (nums[i]){
			n = i*i;
			for (int j = n; j <= SIZE; j += n){
				nums[j] = false;
			}
		}
	}


	//output
	int count = 0;
	for (int i = 0; i < SIZE; ++i){
		if (nums[i]){
	//		printf("%i\n", i);
			++count;
		}
	}
	printf("count=%i\n", count);
	return 0;
}



Пришлось воспользоваться конструкцией предложенной другим автором, но ничего страшного, та конструкция лучше того, что я предлагал вчера
...
Рейтинг: 0 / 0
Генератор простых чисел (до 10^9 за 5 сек)
    #38923257
Фотография SashaMercury
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima TОпять же проверить тот сайт ты не можешь. Где гарантия что не врут? Как проверить?
Простое число 4200000037 как бы его точно в квадрат возвести и туда запостить. Везде округленные значения.

17640000310800001369
я ведь писал программу для работы с длинной арифметикой :)
...
Рейтинг: 0 / 0
Генератор простых чисел (до 10^9 за 5 сек)
    #38923259
Фотография SashaMercury
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Тот ресурс корректно справился с этим числом.
...
Рейтинг: 0 / 0
Генератор простых чисел (до 10^9 за 5 сек)
    #38923282
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SashaMercuryАлгоритм Аткина, согласно Аткину, реализован

Пришлось воспользоваться конструкцией предложенной другим автором, но ничего страшного, та конструкция лучше того, что я предлагал вчера
В википедии подобная конструкция, но есть разница в мелочах. Хорошо написал, твой код понятнее. Теперь есть точка отсчета для оптимизации.

По твоему коду, что можно оптимизировать:
1. element_belong() раскладывается на 3 массива по 60 элементов, проставить true там где надо, затем проверять divisors1[n%60]. Можно 64 бита взять.
2. Вывод результата начиная с 3 и шагом 2.
3. Четные можно выкинуть из биткарты. Просто добавить проверку n на четность перед использованием n. if(n&1) ... Памяти потребуется вдвое меньше.

Еще бы n%60 как-то ускорить, т.е. от % избавиться.

Мысль появились: для оценки производительности надо посчитать общее количество итераций. Если у Аткина их заметно меньше Эратосфена, то есть смысл дальше бороться за скорость. Замерю - отпишусь.


SashaMercury17640000310800001369
я ведь писал программу для работы с длинной арифметикой :)
Вчера не сообразил. Вот она первая проблема чисел х64: как результаты смотреть? Надо про printf() почитать, может есть такой тип, или придется накидать что-нибудь простенькое.
...
Рейтинг: 0 / 0
Генератор простых чисел (до 10^9 за 5 сек)
    #38923301
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Генератор простых чисел (до 10^9 за 5 сек)
    #38923311
Barlone
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonНемного отвлеку вас. Нашёл страничку. Онлайн факторизатор.

http://ru.numberempire.com/numberfactorizer.php

Вот такое вот число
Код: plaintext
1.
999999999999999999999999999999999999999999999999999999999997 


было разложено на множители менее чем за сек.
Код: plaintext
1.
719*757*6755603*271963805968702864258461551790513043662751795453



Вам интересно, как? Мне - да. Мне интересно.Однозначно не перебором простых делителей. Если 6755603 еще гипотетически можно найти перебором, то например 340282366920938463463374607431768211457 (это 2^128+1 - седьмое число Ферма) разлагается на множители 59649589127497217*5704689200685129054721. Тут перебор делителей не поможет.
https://ru.wikipedia.org/wiki/Факторизация_с_помощью_эллиптических_кривых
https://ru.wikipedia.org/wiki/Метод_квадратичного_решета
https://ru.wikipedia.org/wiki/Общий_метод_решета_числового_поля
...
Рейтинг: 0 / 0
Генератор простых чисел (до 10^9 за 5 сек)
    #38923312
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Затестил итерации Аткина и ЭротосфенаАткина взял своего (причесанного из вики), по циклам он с Сашиным совпадает.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
typedef unsigned long long uint64_t;

std::vector<unsigned int> prime;

void atkin(unsigned int limit)
{
	unsigned int* bitmap = (unsigned int*) calloc(limit / 32 + 1 + ((limit & 31) ? 1 : 0), sizeof(unsigned int));
	bitmap[0] = 12;
	unsigned int sqr_lim = (unsigned int)sqrt((long double)limit);
 	uint64_t cnt = 0;

	// Предположительно простые - это целые с нечетным числом
	// представлений в данных квадратных формах.
	// x2 и y2 - это квадраты i и j (оптимизация).
	unsigned int x2 = 0;
	for (unsigned int i = 1; i <= sqr_lim; i++) {
		x2 += 2 * i - 1;
		unsigned int y2 = 0;
		for (unsigned int j = 1; j <= sqr_lim; j++) {
			y2 += 2 * j - 1;
			cnt++; // cnt += 3;
			unsigned int n = 4 * x2 + y2;
			unsigned int m = n % 12;
			if ((n <= limit) && (m == 1 || m == 5))
				bitmap[n >> 5] ^= (1 << (n & 31));
	 
			n -= x2; // Оптимизация n = 3 * x2 + y2; 
			if ((n <= limit) && (n % 12 == 7)) {
				bitmap[n >> 5] ^= (1 << (n & 31));
			}
	 
			n -= 2 * y2; // Оптимизация n = 3 * x2 - y2;
			if ((i > j) && (n <= limit) && (n % 12 == 11)) {
				bitmap[n >> 5] ^= (1 << (n & 31));
			}
		}
	}
	 
	// Отсеиваем кратные квадратам простых чисел в интервале [5, sqrt(limit)].
	// (основной этап не может их отсеять)
	//for (unsigned int i = 5; i <= sqr_lim; i++) {
	for (unsigned int i = 5; i <= sqr_lim; i+=2) {
		cnt++;
		if (bitmap[i >> 5] & (1 << (i & 31))) {
			cnt--;
			unsigned int n = i * i;
			for (unsigned int j = n; j <= limit; j += n) {
				cnt++;
				bitmap[j >> 5] &= ~(1 << (j & 31));
			}
		}
	}
	 
	// Вывод списка простых чисел в консоль.
	//printf("2, 3, 5"); 
	prime.push_back(2);
	prime.push_back(3);
	prime.push_back(5);
	for(unsigned int i = 7; i <= limit; i += 2) {  // добавлена проверка делимости на 3 и 5. В оригинальной версии алгоритма потребности в ней нет.
		//if ((bitmap[i >> 5] & (1 << (i & 31))) && (i % 3 != 0) && (i % 5 !=  0)){
		cnt++;
		if ((bitmap[i >> 5] & (1 << (i & 31)))){
		  // printf(", %d", i);
		   prime.push_back(i);
		}
	}
	free(bitmap);
	if(cnt > 0xFFFFFFFF) {
		printf("atkin > 0xFFFFFFFF times\n");
	} else {
		printf("atkin %d times\n", (unsigned int) cnt);
	}
}

void eratosfen(unsigned int limit)
{
	unsigned int* bitmap = (unsigned int*) calloc(limit / 64 + ((limit & 63) ? 1 : 0), sizeof(unsigned int));
	prime.push_back(2);
	prime.push_back(3);
	uint64_t cnt = 0;
	unsigned int max_prime = 3; // максимальное простое
	bool need_fill = true;
	while(need_fill) {
		cnt++;
		unsigned int step = max_prime << 1;
		for(unsigned int i = max_prime * max_prime; i < limit; i += step) { // Вычеркиваем кратные max_pr
			bitmap[i >> 6] |= (1 << ((i >> 1) & 31));
			cnt++;
		}
		if(max_prime * max_prime >= limit) need_fill = false; // дальше заполнять не надо
		// вычитываем следущую порцию
		for(unsigned int i = max_prime + 2; i < limit; i += 2) {
			cnt++;
			if((bitmap[i >> 6] & (1 << ((i >> 1) & 31))) == 0) {
				prime.push_back(i);
				if(need_fill) {
					max_prime = i;
					break;
				}
			}
		}
	}
	free(bitmap);
	if(cnt > 0xFFFFFFFF) {
		printf("eratosfen > 0xFFFFFFFF times\n");
	} else {
		printf("eratosfen %d times\n", (unsigned int) cnt);
	}
}


Результатtest 100000000
eratosfen 146286641 times
atkin 159115849 times
Аткин на 8,7% больше проходов. Это еще без учета того что в первом цикле за раз три значения обрабатываются. Если там по 3 считать, то будет 359115849.
Вобщем надо Аткина как-то в эту сторону оптимизировать. По максимуму бороться с четными в переменных цикла. Что смог - уже учел в коде теста.
Проверьте, может криво намерил.
...
Рейтинг: 0 / 0
Генератор простых чисел (до 10^9 за 5 сек)
    #38923316
Фотография SashaMercury
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А можно 4 млрд. сравнить?
...
Рейтинг: 0 / 0
Генератор простых чисел (до 10^9 за 5 сек)
    #38923344
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SashaMercuryА можно 4 млрд. сравнить?
Тест доЭратосфенАткин10000012161915898610000001311234159126610000000139255881591017810000000014628664115911584980000000012152607781272900787
Аткин до 800 млн. считает корректно. Дальше разрядности x32 не хватает. Проблема отсюда же. 4*x2+y2, т.е. предел 4 млрд./5

Надо как-то выскакивать из цикла досрочно
Пробовал так. Вроде логично, но результаты становятся неправильные, затести на своем варианте
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
	for (unsigned int i = 1; i <= sqr_lim; i++) {
		x2 += 2 * i - 1;
		unsigned int y2 = 0;
		for (unsigned int j = 1; j <= sqr_lim; j++) {
			y2 += 2 * j - 1;
			cnt++; //cnt += 3;
			unsigned int n = 4 * x2 + y2;
			unsigned int m = n % 12;
			if ((n <= limit) && (m == 1 || m == 5))
				bitmap[n >> 5] ^= (1 << (n & 31));
	 
			n -= x2; // Оптимизация n = 3 * x2 + y2; 
			if ((n <= limit) && (n % 12 == 7)) {
				bitmap[n >> 5] ^= (1 << (n & 31));
			}
	 
			n -= 2 * y2; // Оптимизация n = 3 * x2 - y2;
			if(n > limit) break;
			if ((i > j) && (n <= limit) && (n % 12 == 11)) {
				bitmap[n >> 5] ^= (1 << (n & 31));
			}
		}
	}

...
Рейтинг: 0 / 0
Генератор простых чисел (до 10^9 за 5 сек)
    #38923370
Фотография SashaMercury
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima T
Надо как-то выскакивать из цикла досрочно
Пробовал так. Вроде логично, но результаты становятся неправильные, затести на своем варианте
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
	for (unsigned int i = 1; i <= sqr_lim; i++) {
		x2 += 2 * i - 1;
		unsigned int y2 = 0;
		for (unsigned int j = 1; j <= sqr_lim; j++) {
			y2 += 2 * j - 1;
			cnt++; //cnt += 3;
			unsigned int n = 4 * x2 + y2;
			unsigned int m = n % 12;
			if ((n <= limit) && (m == 1 || m == 5))
				bitmap[n >> 5] ^= (1 << (n & 31));
	 
			n -= x2; // Оптимизация n = 3 * x2 + y2; 
			if ((n <= limit) && (n % 12 == 7)) {
				bitmap[n >> 5] ^= (1 << (n & 31));
			}
	 
			n -= 2 * y2; // Оптимизация n = 3 * x2 - y2;
			if(n > limit) break;
			if ((i > j) && (n <= limit) && (n % 12 == 11)) {
				bitmap[n >> 5] ^= (1 << (n & 31));
			}
		}
	}



логично что они становятся неправильные, y растёт, потому n убывает, потому корни ещё могут быть, прерывать нельзя
...
Рейтинг: 0 / 0
Генератор простых чисел (до 10^9 за 5 сек)
    #38923394
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SashaMercuryлогично что они становятся неправильные, y растёт, потому n убывает, потому корни ещё могут быть, прерывать нельзя
Понял. Тогда надо как-то перешагнуть область где (n > limit). Надо формулу изобретать.
Как вариант: прервать цикл и пойти с обратного конца. Так правильно будет?
...
Рейтинг: 0 / 0
Генератор простых чисел (до 10^9 за 5 сек)
    #38923413
Фотография SashaMercury
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima TSashaMercuryлогично что они становятся неправильные, y растёт, потому n убывает, потому корни ещё могут быть, прерывать нельзя
Понял. Тогда надо как-то перешагнуть область где (n > limit). Надо формулу изобретать.
Как вариант: прервать цикл и пойти с обратного конца. Так правильно будет?

Да, скорее всего так и нужно, значение y должно плясать от значение x с конца..
PS
Что-то не так. Аткин доказал что его алгоритм эффективнее, пусть это и не заметно на маленьких объёмах. У нас получается обратное, сейчас мы занимаемся оптимизацией. Значит либо Алгоритм реализован неправильно, либо в чём-то другом дело. Аткин говорит о 19 секундах для миллиарда, на более простом алгоритме, на старой машине. Что-то видимо я не так сделал.
...
Рейтинг: 0 / 0
Генератор простых чисел (до 10^9 за 5 сек)
    #38923431
Фотография SashaMercury
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот что соавтор Аткина пишет , и выкладывает
...
Рейтинг: 0 / 0
Генератор простых чисел (до 10^9 за 5 сек)
    #38923443
Фотография SashaMercury
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Возможно запустить его код и проверить на своей машине, или это будет проблематично ?
Интересно, будет ли тот код быстрее твоей реализации Эратосфена
...
Рейтинг: 0 / 0
Генератор простых чисел (до 10^9 за 5 сек)
    #38923464
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SashaMercuryВозможно запустить его код и проверить на своей машине, или это будет проблематично ?
Интересно, будет ли тот код быстрее твоей реализации Эратосфена
Видел ту ссылку, только там какая-то гора исходников, внутрь не заглядывал. Можно попробовать. Пока некогда, вечером попробую запустить.

Можешь сам затестить. Мой Эратосфен выше. Выкини в обоих случаях сохранение. У меня prime.push_back(). Замени на подсчет количества найденных.
...
Рейтинг: 0 / 0
Генератор простых чисел (до 10^9 за 5 сек)
    #38923665
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonНу не взлетело так не взлетело. Я думал мета-компилляция спасёт моё решето...
Вобщем я подумал и вот что решил. Никакое это не решето мейтона. Это фильтр мейтона. (Mayton's numbers filter (MNF)).
Ну... вобщем нет смысла хардкодить циклическую арифметику на полную длину primes до SQRT.
Но можно эффективно отбрасывать PRIMES которые имеют делители до первой сотни. И вот почему.
В современных железках есть команды SIMD. Это когда за 1 шаг мы выполняем вектор инициаций.
Вектор сложений. И вектор еще чего-нибудь. Напр 128-битный SSE регист может быть побит на 4х64
или 8х32 регистра и операции сложения будут работать как микро-threads в контексте 1 итерации
проверки числа на простоту.

Вот такой вот экстенсивный путь еще есть. Мдя...
...
Рейтинг: 0 / 0
Генератор простых чисел (до 10^9 за 5 сек)
    #38923670
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima TSashaMercuryВозможно запустить его код и проверить на своей машине, или это будет проблематично ?
Интересно, будет ли тот код быстрее твоей реализации Эратосфена
Видел ту ссылку, только там какая-то гора исходников, внутрь не заглядывал. Можно попробовать. Пока некогда, вечером попробую запустить.

Можешь сам затестить. Мой Эратосфен выше. Выкини в обоих случаях сохранение. У меня prime.push_back(). Замени на подсчет количества найденных.
Саша. Дима. Давайте зальём в репозитарий. Будет удобнее работать совместно.
...
Рейтинг: 0 / 0
Генератор простых чисел (до 10^9 за 5 сек)
    #38923691
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonСаша. Дима. Давайте зальём в репозитарий. Будет удобнее работать совместно.
Я не против, только не умею :) Как понимаю ты тут уже все заготовил 17455393

Как туда зацепиться? Есть какая-нибудь инструкция? желательно на русском.
...
Рейтинг: 0 / 0
Генератор простых чисел (до 10^9 за 5 сек)
    #38923700
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Скачай и установи себе TortoiseSVN.

http://tortoisesvn.net/

Дальше - расскажу.
...
Рейтинг: 0 / 0
Генератор простых чисел (до 10^9 за 5 сек)
    #38923706
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,

Круто, у нас будет собственный fun-проект...
...
Рейтинг: 0 / 0
Генератор простых чисел (до 10^9 за 5 сек)
    #38923724
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonСкачай и установи себе TortoiseSVN.

http://tortoisesvn.net/

Дальше - расскажу.
Дальше не надо. Уже стоит. Думал там что-то другое надо.
Зарегался, качнул. Вечером освобожусь, подготовлю свои поделки к аплоаду.
...
Рейтинг: 0 / 0
Генератор простых чисел (до 10^9 за 5 сек)
    #38923749
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima TДальше не надо. Уже стоит. Думал там что-то другое надо.
Зарегался, качнул. Вечером освобожусь, подготовлю свои поделки к аплоаду.
Ты должен дать мне реквест на добавление тебя в группу разработки. Иначе доступ - R/O.
...
Рейтинг: 0 / 0
Генератор простых чисел (до 10^9 за 5 сек)
    #38923750
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У меня кстати первая в жизни самостоятельная программа была (учебное задание на первом курсе) -- именно генерация простых чисел и именно решетом Эратосфена.
На Fortran-IV.
На ЕС ЭВМ.
До сих пор где-то тетрадка с распечаткой валяется.

Это был первый урок постижения, что такое "производительность" и как за неё бороться.
Меня отец учил. Сначала написал, отладил на числах до 100, запустил на до миллиона -- задача снята без
ответа (на ЕС пакетный режим, и ограничение по процессорному времени были).
И дальше -- поехало, такая оптимизация, такая (деталей не помню) -- всё на математике.
В конце влезла она в тайм-слот, и напечатала все числа, задание сдал.

Попробую отрыть тетрадь для прикола...
...
Рейтинг: 0 / 0
25 сообщений из 402, страница 3 из 17
Форумы / C++ [игнор отключен] [закрыт для гостей] / Генератор простых чисел (до 10^9 за 5 сек)
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]