判断一个数是素数
解决方案 »
- 急啊~~~跪求各位高手!实时取航班数据的存储过程怎么写?
- oracle 存储过程查询结果打印很慢 在线等
- 数据库DBA高手快来啊,linux shell编程 从文本文件读取行和列内容 插入数据库,要怎么读取出来
- 请教大家个sql语句的写法,急着上线,请大家帮忙,谢谢
- 数据库开发中大批量数据怎么提交?
- 一个用户对应多个email 、phone、address的表问T
- 怎么转换oracle的日期格式
- 求数据库联合查询(急)在线等
- 请问那里有ORACLE8的客户端下载?
- 散分问题:现在的机器上已有一个oracle 8i服务器了,我现在需要登录另一台机器上的oracle 8i服务器,我该怎么操作呢?谢谢,来者有分!!!!
- 如何创建一个触发器来校验数据的连贯性?
- oracle 将查询出的多条相同数据合并为一条数据;
--自己去琢磨下
SQL> edi
已写入 file afiedt.buf 1 CREATE OR REPLACE FUNCTION sushu(n in int)
2 return boolean
3 is
4 shum boolean;
5 flag boolean;
6 j int;
7 begin
8 flag:=true;
9 for j in 2..trunc(sqrt(n)) loop
10 if n mod j=0 then
11 flag:=false;
12 exit;
13 end if;
14 end loop;
15 if flag=true then
16 shum:=true;
17 else
18 shum:=false;
19 end if;
20 return(shum);
21* end sushu;
SQL> /函数已创建。SQL> declare
2 n int;
3 m boolean;
4 k int:=0;
5 begin
6 for n in 2..100 loop
7 m:=sushu(n);
8 if m=true then
9 DBMS_OUTPUT.PUT_LINE(n);
10 k:=k+1;
11 end if;
12 end loop;
13 DBMS_OUTPUT.PUT_LINE('2_100之间总共有'||to_char(k)||'个素数');
14 end;
15 /
2
3
5
7
11
13
17
19
23
29
31
37
41
43
47
53
59
61
67
71
73
79
83
89
97
2_100之间总共有25个素数PL/SQL 过程已成功完成。
--1不属于素数,所以从2开始
--刚有事情去了
RETURN VARCHAR2
IS
v_trunc NUMBER(18,0); -- 将输入参数取整
v_seq NUMBER(18,0); -- 求出输入数的算术平方根加1,用作循环条件
v_isSushu VARCHAR2(100);
BEGIN
v_trunc := trunc(v_num);
v_seq := sqrt(trunc(v_num))+1;
v_isSushu := '是素数';
FOR i IN 2..v_seq LOOP -- 只能被1和他本身整除的数叫素数!
IF mod(v_trunc,i) = 0 THEN
v_isSushu := '不是素数';
exit;
END IF;
END LOOP;
return v_isSushu;
EXCEPTION
WHEN OTHERS
THEN
RETURN ('Error in running show_description');
END;
/
select isSushu_fun(17) from dual;
v_suShu VARCHAR2(40);
v_isnum NUMBER(18,0);
v_isNotnum NUMBER(18,0);
BEGIN
v_isnum := 0;
FOR i IN 1..10000 LOOP
v_suShu := isSushu_fun(i);
IF v_suShu = '是素数' THEN
v_isnum := v_isnum + 1;
DBMS_OUTPUT.PUT_LINE(i||' '||v_suShu);
END IF;
END LOOP;
DBMS_OUTPUT.PUT_LINE('从1到10000 之间的素数共有:'||v_isnum);
END;
/