|
按你的:
SQL> set timing on;
SQL>
SQL>
SQL> with
2 function fn_prime (p_prime in integer) return int
3 is
4 i integer :=2;
5 begin
6 while (i<=sqrt(p_prime)) loop
7 if mod(p_prime,i) = 0 then
8 return 0;
9 else
10 i := i+1;
11 end if;
12 end loop;
13 return 1;
14 end;
15 t as (select level n from dual where mod(level,2) <> 0 connect by level <=10),
16 s(lvl,nlist) as (select 1,decode(n,1,2,n) from t where n < 9
17 union all
18 select lvl + 1,
19 to_number(s.nlist||t.n)
20 from s,t
21 where lvl < 10
22 and fn_prime (to_number(s.nlist||t.n)) = 1 )
23 select max(nlist) from s
24 /
MAX(NLIST)
----------
73939133
Executed in 0.063 seconds
SQL>
SQL> with
2 function fn_prime (p_prime in integer) return int
3 is
4 i integer :=2;
5 begin
6 while (i<=sqrt(p_prime)) loop
7 if mod(p_prime,i) = 0 then
8 return 0;
9 else
10 i := i+1;
11 end if;
12 end loop;
13 return 1;
14 end;
15 t as (select level n from dual where mod(level,2) <> 0 connect by level <=10),
16 s(lvl,nlist) as (select 1,decode(n,1,2,n) from t where n < 9
17 union all
18 select lvl + 1,
19 to_number(s.nlist||t.n)
20 from s,t
21 where lvl < 15
22 and fn_prime (to_number(s.nlist||t.n)) = 1 )
23 select max(nlist) from s
24 /
MAX(NLIST)
----------
73939133
Executed in 0.062 seconds
所以 73939133 这就应该是最大的了。 |
|