|
花花的肉果然强大:
WITH t0 AS (
SELECT 2*ROWNUM+1 rn FROM DUAL CONNECT BY ROWNUM <= (100000)/2-1-1
),
t as(SELECT rn from t0
where mod(rn,3)<>0
and mod(rn,5)<>0
and mod(rn,7)<>0
)
,p AS (
SELECT TO_CHAR(rn) n,LENGTH(rn) len
FROM (SELECT rn from t
MINUS
SELECT t1.rn * t2.rn
FROM t t1, t t2
WHERE t1.rn <= t2.rn
AND t1.rn BETWEEN 11 AND (SELECT SQRT(100000) FROM DUAL)
AND t1.rn * t2.rn <100000
)
WHERE rn>10
)
,t2 AS (
SELECT p1.n||substr(p2.n,2) AS n
FROM p p1, p p2, p
WHERE p1.len=2 AND p2.len=2
AND SUBSTR(p1.n,2)=substr(p2.n,1,1) AND p1.n||substr(p2.n,2) =p.n
)
,t3 AS (
SELECT t21.n||substr(t22.n,3) AS n
FROM t2 t21,t2 t22,p
WHERE SUBSTR(t21.n,2)=substr(t22.n,1,2) AND t21.n||substr(t22.n,3)=p.n
)
,t4 AS (
SELECT t31.n||substr(t32.n,4) AS n
FROM t3 t31,t3 t32,p
WHERE SUBSTR(t31.n,2)=substr(t32.n,1,3) AND t31.n||substr(t32.n,4)=p.n
)
SELECT * FROM t4;
no rows selected
可见5位数的没有答案,改用4位:
WITH t0 AS (
SELECT 2*ROWNUM+1 rn FROM DUAL CONNECT BY ROWNUM <= (100000)/2-1-1
),
t as(SELECT rn from t0
where mod(rn,3)<>0
and mod(rn,5)<>0
and mod(rn,7)<>0
)
,p AS (
SELECT TO_CHAR(rn) n,LENGTH(rn) len
FROM (SELECT rn from t
MINUS
SELECT t1.rn * t2.rn
FROM t t1, t t2
WHERE t1.rn <= t2.rn
AND t1.rn BETWEEN 11 AND (SELECT SQRT(100000) FROM DUAL)
AND t1.rn * t2.rn <100000
)
WHERE rn>10
)
,t2 AS (
SELECT p1.n||substr(p2.n,2) AS n
FROM p p1, p p2, p
WHERE p1.len=2 AND p2.len=2
AND SUBSTR(p1.n,2)=substr(p2.n,1,1) AND p1.n||substr(p2.n,2) =p.n
)
,t3 AS (
SELECT t21.n||substr(t22.n,3) AS n
FROM t2 t21,t2 t22,p
WHERE SUBSTR(t21.n,2)=substr(t22.n,1,2) AND t21.n||substr(t22.n,3)=p.n
)
SELECT * FROM t3;
N
-----------------------
9719
6131
3137
1373
6173
3797
6197
7 rows selected.
Elapsed: 00:00:00.89
最大确实是9719。
|
|