Попробуйте иначе найти сомножители для всех ННЧ, скажем, от 1379 до 1651.
Дальше буду сопровождать расчетами из pari/gp - это такой калькулятор.
Если я правильно понял что вы предлагаете, то делаем так.
Присвоим переменным
a и
b значения начала и конца диапазон
а
? a=1379;b=1651;Вычисляем квадратный корень из правого конца диапазона и ищем наименьшее простое число, большее этого корня, назовём его
p:
? p=nextprime(sqrtint(b));print(p)
41
?Теперь возьмём начало диапазона и посчитаем остатки от деления его на все удвоенные простые числа
q начиная от 3 до
p, и соответственно первое нечётное число диапазона, которое делится на
q, оно будет нашим первым ННЧ, имеющим множитель q
Код:
? forprime(q=3,p,print("Следующее за числом ",a," ННЧ, которое делится на q=",q," равно ",a-a%(2*q)+3*q))
Следующее за числом 1379 ННЧ, которое делится на q=3 равно 1383
Следующее за числом 1379 ННЧ, которое делится на q=5 равно 1385
Следующее за числом 1379 ННЧ, которое делится на q=7 равно 1393
Следующее за числом 1379 ННЧ, которое делится на q=11 равно 1397
Следующее за числом 1379 ННЧ, которое делится на q=13 равно 1417
Следующее за числом 1379 ННЧ, которое делится на q=17 равно 1411
Следующее за числом 1379 ННЧ, которое делится на q=19 равно 1425
Следующее за числом 1379 ННЧ, которое делится на q=23 равно 1403
Следующее за числом 1379 ННЧ, которое делится на q=29 равно 1421
Следующее за числом 1379 ННЧ, которое делится на q=31 равно 1457
Следующее за числом 1379 ННЧ, которое делится на q=37 равно 1443
Следующее за числом 1379 ННЧ, которое делится на q=41 равно 1435
time = 1 ms.
?
Теперь для каждого простого числа
q из диапазона от 3 до p, выпишем арифметическую прогрессию нечетных чисел, которые попадают в диапазон между
a и
b и делятся на
qНа примере
q=41, получаем
? q=41;forstep(i= a-a%(2*q)+3*q,b,2*q,print1(i," "));print()
1435 1517 1599
?Это все нечётные непростые числа из диапазона от
a=1379 до
b=1651, которые делятся на
41Так же поступаем с остальными
Итого, чтобы разбить все числа из данного диапазона на нечетные не простые числа, которые делятся на все возможные в качестве делителей простые числа, имеем такую программу:
Код:
? non_prime_odd(a,b)=print("Задан диапазон от a=",a," до b=",b);forprime(q=3,nextprime(sqrtint(b)), print("ННЧ которые делятся на ",q,":");forstep(i= a-a%(2*q)+3*q,b,2*q,print1(i," "));print())
Результат её работы для заданного вами диапазона (внимание, много букв и широкие строки):
(Оффтоп)
- ? non_prime_odd(1379,1651)
- Задан диапазон от a=1379 до b=1651
- ННЧ которые делятся на 3:
- 1383 1389 1395 1401 1407 1413 1419 1425 1431 1437 1443 1449 1455 1461 1467 1473 1479 1485 1491 1497 1503 1509 1515 1521 1527 1533 1539 1545 1551 1557 1563 1569 1575 1581 1587 1593 1599 1605 1611 1617 1623 1629 1635 1641 1647
- ННЧ которые делятся на 5:
- 1385 1395 1405 1415 1425 1435 1445 1455 1465 1475 1485 1495 1505 1515 1525 1535 1545 1555 1565 1575 1585 1595 1605 1615 1625 1635 1645
- ННЧ которые делятся на 7:
- 1393 1407 1421 1435 1449 1463 1477 1491 1505 1519 1533 1547 1561 1575 1589 1603 1617 1631 1645
- ННЧ которые делятся на 11:
- 1397 1419 1441 1463 1485 1507 1529 1551 1573 1595 1617 1639
- ННЧ которые делятся на 13:
- 1417 1443 1469 1495 1521 1547 1573 1599 1625 1651
- ННЧ которые делятся на 17:
- 1411 1445 1479 1513 1547 1581 1615 1649
- ННЧ которые делятся на 19:
- 1425 1463 1501 1539 1577 1615
- ННЧ которые делятся на 23:
- 1403 1449 1495 1541 1587 1633
- ННЧ которые делятся на 29:
- 1421 1479 1537 1595
- ННЧ которые делятся на 31:
- 1457 1519 1581 1643
- ННЧ которые делятся на 37:
- 1443 1517 1591
- ННЧ которые делятся на 41:
- 1435 1517 1599
- time = 4 ms.
- ?