Ludic numbers: Difference between revisions
Content added Content deleted
m (→{{header|Julia}}: tiny correction) |
No edit summary |
||
Line 1,453: | Line 1,453: | ||
( 5 7 11) ( 11 13 17) ( 23 25 29) ( 41 43 47) |
( 5 7 11) ( 11 13 17) ( 23 25 29) ( 41 43 47) |
||
( 173 175 179) ( 221 223 227) ( 233 235 239)</pre> |
( 173 175 179) ( 221 223 227) ( 233 235 239)</pre> |
||
=={{header|PL/SQL}}== |
|||
<lang plsql>SET SERVEROUTPUT ON |
|||
DECLARE |
|||
c_limit CONSTANT PLS_INTEGER := 25000; |
|||
TYPE t_nums IS TABLE OF PLS_INTEGER INDEX BY PLS_INTEGER; |
|||
v_nums t_nums; |
|||
v_ludic t_nums; |
|||
v_count_ludic PLS_INTEGER; |
|||
v_count_pos PLS_INTEGER; |
|||
v_pos PLS_INTEGER; |
|||
v_next_ludic PLS_INTEGER; |
|||
FUNCTION is_ludic(p_num PLS_INTEGER) RETURN BOOLEAN IS |
|||
BEGIN |
|||
FOR i IN 1..v_ludic.COUNT LOOP |
|||
EXIT WHEN v_ludic(i) > p_num; |
|||
IF v_ludic(i) = p_num THEN |
|||
RETURN TRUE; |
|||
END IF; |
|||
END LOOP; |
|||
RETURN FALSE; |
|||
END; |
|||
BEGIN |
|||
FOR i IN 1..c_limit LOOP |
|||
v_nums(i) := i; |
|||
END LOOP; |
|||
v_count_ludic := 1; |
|||
v_next_ludic := 1; |
|||
v_ludic(v_count_ludic) := v_next_ludic; |
|||
v_nums.DELETE(1); |
|||
WHILE v_nums.COUNT > 0 LOOP |
|||
v_pos := v_nums.FIRST; |
|||
v_next_ludic := v_nums(v_pos); |
|||
v_count_ludic := v_count_ludic + 1; |
|||
v_ludic(v_count_ludic) := v_next_ludic; |
|||
v_count_pos := 0; |
|||
WHILE v_pos IS NOT NULL LOOP |
|||
IF MOD(v_count_pos, v_next_ludic) = 0 THEN |
|||
v_nums.DELETE(v_pos); |
|||
END IF; |
|||
v_pos := v_nums.NEXT(v_pos); |
|||
v_count_pos := v_count_pos + 1; |
|||
END LOOP; |
|||
END LOOP; |
|||
dbms_output.put_line('Generate and show here the first 25 ludic numbers.'); |
|||
FOR i IN 1..25 LOOP |
|||
dbms_output.put(v_ludic(i) || ' '); |
|||
END LOOP; |
|||
dbms_output.put_line(''); |
|||
dbms_output.put_line('How many ludic numbers are there less than or equal to 1000?'); |
|||
v_count_ludic := 0; |
|||
FOR i IN 1..v_ludic.COUNT LOOP |
|||
EXIT WHEN v_ludic(i) > 1000; |
|||
v_count_ludic := v_count_ludic + 1; |
|||
END LOOP; |
|||
dbms_output.put_line(v_count_ludic); |
|||
dbms_output.put_line('Show the 2000..2005''th ludic numbers.'); |
|||
FOR i IN 2000..2005 LOOP |
|||
dbms_output.put(v_ludic(i) || ' '); |
|||
END LOOP; |
|||
dbms_output.put_line(''); |
|||
dbms_output.put_line('A triplet is any three numbers x, x + 2, x + 6 where all three numbers are also ludic numbers.'); |
|||
dbms_output.put_line('Show all triplets of ludic numbers < 250 (Stretch goal)'); |
|||
FOR i IN 1..v_ludic.COUNT LOOP |
|||
EXIT WHEN (v_ludic(i)+6) >= 250; |
|||
IF is_ludic(v_ludic(i)+2) AND is_ludic(v_ludic(i)+6) THEN |
|||
dbms_output.put_line(v_ludic(i) || ', ' || (v_ludic(i)+2) || ', ' || (v_ludic(i)+6)); |
|||
END IF; |
|||
END LOOP; |
|||
END; |
|||
/ |
|||
</lang> |
|||
{{out}} |
|||
<pre>Generate and show here the first 25 ludic numbers. |
|||
1 2 3 5 7 11 13 17 23 25 29 37 41 43 47 53 61 67 71 77 83 89 91 97 107 |
|||
How many ludic numbers are there less than or equal to 1000? |
|||
142 |
|||
Show the 2000..2005'th ludic numbers. |
|||
21475 21481 21487 21493 21503 21511 |
|||
A triplet is any three numbers x, x + 2, x + 6 where all three numbers are also ludic numbers. |
|||
Show all triplets of ludic numbers < 250 (Stretch goal) |
|||
1, 3, 7 |
|||
5, 7, 11 |
|||
11, 13, 17 |
|||
23, 25, 29 |
|||
41, 43, 47 |
|||
173, 175, 179 |
|||
221, 223, 227 |
|||
233, 235, 239</pre> |
|||
=={{header|Python}}== |
=={{header|Python}}== |