想請問一下
我是用java的eclipse
-------------------------------------------------------------------
package hello;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class ex1 {
public static void main(String[] args) throws NumberFormatException, IOException {
// TODO Auto-generated method stub
BufferedReader in = new BufferedReader (new InputStreamReader(System.in));
String start;
while(((start=in.readLine()) != null))
{
boolean cha=false;
for(int i=2;i<=Math.sqrt(Integer.parseInt(start));i++)
{
if(Integer.parseInt(start)%i==0) cha=true;
}
if(cha==true) System.out.println("非質數");
else if(Integer.parseInt(start)==0)System.out.println("非質數");
else if(Integer.parseInt(start)==1)System.out.println("非質數");
else if(Integer.parseInt(start)==2)System.out.println("質數");
else if(Integer.parseInt(start)==3)System.out.println("質數");
else System.out.println("質數");
}
}
}
----------------------------------------------------------------
請問為什麼一直出現TLE(6s) (逾時)
我測試的時候 最大的那個數2147483647也只需不到1秒就跑出結果了
1.該怎麼改才行呢?
2.以EOF結尾到底是什麼意思?
想請問一下
我是用java的eclipse
-------------------------------------------------------------------
package hello;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class ex1 {
public static void main(String[] args) throws NumberFormatException, IOException {
// TODO Auto-generated method stub
BufferedReader in = new BufferedReader (new InputStreamReader(System.in));
String start;
while(((start=in.readLine()) != null))
{
boolean cha=false;
for(int i=2;i<=Math.sqrt(Integer.parseInt(start));i++)
{
if(Integer.parseInt(start)%i==0) cha=true;
}
if(cha==true) System.out.println("非質數");
else if(Integer.parseInt(start)==0)System.out.println("非質數");
else if(Integer.parseInt(start)==1)System.out.println("非質數");
else if(Integer.parseInt(start)==2)System.out.println("質數");
else if(Integer.parseInt(start)==3)System.out.println("質數");
else System.out.println("質數");
}
}
}
----------------------------------------------------------------
請問為什麼一直出現TLE(6s) (逾時)
我測試的時候 最大的那個數2147483647也只需不到1秒就跑出結果了
1.該怎麼改才行呢?
2.以EOF結尾到底是什麼意思?
測資不只一筆資料
光是跑2000000000~2147483647這些數字就會花掉超過六秒了
請考慮更快的演算法 ;)