#6796: 請問可以查閱測資嗎?我一直TLE,而且515行錯誤(不知道哪裡算錯了)


wl01482665 (阿甘)

學校 : 樹德科技大學
編號 : 25755
來源 : [61.227.200.150]
最後登入時間 :
2016-05-28 23:27:52
a121. 質數又來囉 | From: [114.27.72.98] | 發表日期 : 2012-07-16 22:27

import java.util.Scanner;

public class a121{
public static void main(String [] argv){

Scanner abc = new Scanner(System.in);

while(abc.hasNext()){
int a = abc.nextInt();
int b = abc.nextInt();
int o = 0;
boolean i = true;
int d =(int) Math.sqrt(b);
for(long c = a;c <= b;c++){
if(c == 1)i=false;
if(c == 2)i=true;
if(c == 3)i=true;
if(c == 5)i=true;
if(c == 7)i=true;
if(c != 2 && c % 2==0)i=false;
if(c != 3 && c % 3==0)i=false;
if(c != 5 && c % 5==0)i=false;
if(c != 7 && c % 7==0)i=false;
for(int s = 3;s<=d;s= s+2){
if(c % s==0){
i = false;
break;
}
}if(i){
o++;
}
i = true;
}System.out.println(o);
}
}
}

 
#6860: Re:請問可以查閱測資嗎?我一直TLE,而且515行錯誤(不知道哪裡算錯了)


ericchen323 (玉米)

學校 : 臺北市立成功高級中學
編號 : 6447
來源 : [158.130.55.105]
最後登入時間 :
2021-04-18 21:00:23
a121. 質數又來囉 | From: [114.42.103.44] | 發表日期 : 2012-07-31 17:16

import java.util.Scanner;

public class a121{
public static void main(String [] argv){

Scanner abc = new Scanner(System.in);

while(abc.hasNext()){
int a = abc.nextInt();
int b = abc.nextInt();
int o = 0;
boolean i = true;
int d =(int) Math.sqrt(b);
for(long c = a;c <= b;c++){
if(c == 1)i=false;
if(c == 2)i=true;
if(c == 3)i=true;
if(c == 5)i=true;
if(c == 7)i=true;
if(c != 2 && c % 2==0)i=false;
if(c != 3 && c % 3==0)i=false;
if(c != 5 && c % 5==0)i=false;
if(c != 7 && c % 7==0)i=false;
for(int s = 3;s<=d;s= s+2){
if(c % s==0){
i = false;
break;
}
}if(i){
o++;
}
i = true;
}System.out.println(o);
}
}
}


1非質數,試試看

 
#6999: Re:請問可以查閱測資嗎?我一直TLE,而且515行錯誤(不知道哪裡算錯了)


testjerry (+1)

學校 : 國防大學
編號 : 7951
來源 : [219.84.57.118]
最後登入時間 :
2022-10-17 22:21:55
a121. 質數又來囉 | From: [111.249.61.216] | 發表日期 : 2012-09-09 22:29

import java.util.Scanner;
public class a121{
public static void main(String [] argv){

Scanner abc = new Scanner(System.in);

while(abc.hasNext()){
int a = abc.nextInt();
int b = abc.nextInt();
int o = 0;
boolean i = true;
int d =(int) Math.sqrt(b);
for(long c = a;c <= b;c++){
if(c == 1)i=false;
if(c == 2)i=true;
if(c == 3)i=true;
if(c == 5)i=true;
if(c == 7)i=true;
if(c != 2 && c % 2==0)i=false;
if(c != 3 && c % 3==0)i=false;
if(c != 5 && c % 5==0)i=false;
if(c != 7 && c % 7==0)i=false;
for(int s = 3;s<=d;s= s+2){
if(c % s==0){
i = false;
break;
}
}if(i){
o++;
}
i = true;
}System.out.println(o);
}
}
}


1非質數,試試看



為什麼要把d設為b的根號?
應該是設為c的根號吧
 
不然如果c是小於d根號的質數,s跑到c整除,你的i就變false,會出錯喔~
想一下

(或是我說錯~?) 
 
ZeroJudge Forum