| test_2008 | | тока наскока можно доверять точности trunc(exp(sum(ln(power(mnogitel , stepen))))) неизвестно ... | а какая логика была для trunc, а не round?
SQL> with
2 q as
3 (
4 select t from (
5 select decode(mod(500 , level) , 0 , level , 0) t from dual connect by level<=sqrt(500)
6 ) where t>1
7 ) ,
8 result as (
9 select mnogitel , max(st) stepen from (
10 select t mnogitel , level st from (
11 select q1.t from q q1 left join q q2 ON mod(q1.t , q2.t)=0 and q1.t != q2.t
12 WHERE q2.t is null
13 ) connect by t=prior t and prior dbms_random.value is not null and mod(500 , power(t , level))=0
14 )
15 GROUP BY mnogitel
16 ) ,
17 last_primary as (
18 select 500/trunc(exp(sum(ln(power(mnogitel , stepen))))) , 1 from result
19 )
20 select replace(wm_concat(mnogitel || '^' || stepen) , ',' , '*') from
21 (
22 select * from result
23 union
24 select * from last_primary
25 ) where mnogitel>1
26 /
REPLACE(WM_CONCAT(MNOGITEL||'^
--------------------------------------------------------------------------------
1*00200400801603206412825651302605210421^1*2^2*5^3
SQL> + простые числа не раскладываются
with
q as
(
select t from (
select decode(mod(5 , level) , 0 , level , 0) t from dual connect by level<=sqrt(5)
) where t>1
) ,
result as (
select mnogitel , max(st) stepen from (
select t mnogitel , level st from (
select q1.t from q q1 left join q q2 ON mod(q1.t , q2.t)=0 and q1.t != q2.t
WHERE q2.t is null
) connect by t=prior t and prior dbms_random.value is not null and mod(5 , power(t , level))=0
)
GROUP BY mnogitel
) ,
last_primary as (
select 5/trunc(exp(sum(ln(power(mnogitel , stepen))))) , 1 from result
)
select replace(wm_concat(mnogitel || '^' || stepen) , ',' , '*') from
(
select * from result
union
select * from last_primary
) where mnogitel>1
здорово, иерархия по делителям понравилась |