主题:这道题怎么通不过?????
[em18] 我在“http://acm.tongji.edu.cn”做了一道题 题目是这样的:
Problem
素数是的只能被1和它本身整除的自然数。判断一个数是素数的方法是使用2到该数的平方根的素数除它,若有能整除的则该数不是素数。
Input
本题有多组数据,每组数据由两个正整数M,N组成。(0<M<N<1000000)
Output
输出一个整数,表示介于M,N之间(包括M,N)的素数的数量。
Sample Input
5 10
1 3
6 8
Sample Output
2
2
1
我的程序代码是
program put;
var
i,j,k:longint;
n,m:longint;
p,o:longint;
b:boolean;
label 1;
begin{4}
1: while not seekeof (Input) do
begin
readln(m,n);
k:=0;
if m=n then begin writeln(1);goto 1; end;
if n<m then exit;
begin
k:=0;
b:=true;
if m=1 then m:=m+1;
for i:=m to n do
begin
for j:=2 to round(sqrt(i)) do
if i mod j=0 then
begin b:=false;break;end;
if (b=true) then
begin k:=k+1;end
else begin b:=true;end;
end;
writeln(k);goto 1;
end;
end;
end.
(水平有限)
运行起来的答案和[url=http://acm.tongji.edu.cn/down/problem/1010.exe]样例程序[/url]的答案是一样的,但是交上去系统批改却是时间超出(系统要求时间小于2秒,我的只有一秒多!)
[em18][em18][em18][em18]
Problem
素数是的只能被1和它本身整除的自然数。判断一个数是素数的方法是使用2到该数的平方根的素数除它,若有能整除的则该数不是素数。
Input
本题有多组数据,每组数据由两个正整数M,N组成。(0<M<N<1000000)
Output
输出一个整数,表示介于M,N之间(包括M,N)的素数的数量。
Sample Input
5 10
1 3
6 8
Sample Output
2
2
1
我的程序代码是
program put;
var
i,j,k:longint;
n,m:longint;
p,o:longint;
b:boolean;
label 1;
begin{4}
1: while not seekeof (Input) do
begin
readln(m,n);
k:=0;
if m=n then begin writeln(1);goto 1; end;
if n<m then exit;
begin
k:=0;
b:=true;
if m=1 then m:=m+1;
for i:=m to n do
begin
for j:=2 to round(sqrt(i)) do
if i mod j=0 then
begin b:=false;break;end;
if (b=true) then
begin k:=k+1;end
else begin b:=true;end;
end;
writeln(k);goto 1;
end;
end;
end.
(水平有限)
运行起来的答案和[url=http://acm.tongji.edu.cn/down/problem/1010.exe]样例程序[/url]的答案是一样的,但是交上去系统批改却是时间超出(系统要求时间小于2秒,我的只有一秒多!)
[em18][em18][em18][em18]