#9619: JAVA這樣寫還是TLE


coder1250 (coder1250)

學校 : 不指定學校
編號 : 47660
來源 : [59.120.113.220]
最後登入時間 :
2015-01-29 13:02:10
a007. 判斷質數 | From: [60.249.193.15] | 發表日期 : 2015-01-29 14:18

import java.util.Scanner;
import java.math.*;

public class JAVA {
 public static void main(String[] args)
 {
  Scanner input = new Scanner(System.in);
  int a;
  int i,j,n=0;
  String f;
  while(input.hasNext()) 
  {
   f="true";
   a=input.nextInt();
   for(i=2;i<=Math.sqrt(a);i++)
   {
    
    if(a%i==0 && a!=2)
    {
     f="false";
     System.out.println("非質數");
     break;  
    }
   }
   if(f=="true")
   {
    System.out.println("質數");
   }

  }
 }
}

 
#9621: Re:JAVA這樣寫還是TLE


tomoyaken14 (歐練)

學校 : 不指定學校
編號 : 6922
來源 : [122.117.127.202]
最後登入時間 :
2024-04-15 14:31:55
a007. 判斷質數 | From: [140.117.70.88] | 發表日期 : 2015-01-30 13:10

import java.util.Scanner;
import java.math.*;

public class JAVA {
 public static void main(String[] args)
 {
  Scanner input = new Scanner(System.in);
  int a;
  int i,j,n=0;
  String f;
  while(input.hasNext()) 
  {
   f="true";
   a=input.nextInt();
   for(i=2;i<=Math.sqrt(a);i++)
   {
    
    if(a%i==0 && a!=2)
    {
     f="false";
     System.out.println("非質數");
     break;  
    }
   }
   if(f=="true")
   {
    System.out.println("質數");
   }

  }
 }
}

 

 

在測資非常多筆的時候 

輸入可以考慮不要使用Scanner

輸出也可以再加快

 

 
#9622: Re:JAVA這樣寫還是TLE


nwgs524513cja (無名)

學校 : 不指定學校
編號 : 31663
來源 : [219.87.159.45]
最後登入時間 :
2019-10-22 09:36:31
a007. 判斷質數 | From: [111.243.75.23] | 發表日期 : 2015-01-30 22:22

import java.util.Scanner;
import java.math.*;

public class JAVA {
 public static void main(String[] args)
 {
  Scanner input = new Scanner(System.in);
  int a;
  int i,j,n=0;
  String f;
  while(input.hasNext()) 
  {
   f="true";
   a=input.nextInt();
   for(i=2;i<=Math.sqrt(a);i++)
   {
    
    if(a%i==0 && a!=2)
    {
     f="false";
     System.out.println("非質數");
     break;  
    }
   }
   if(f=="true")
   {
    System.out.println("質數");
   }

  }
 }
}

 

 

在測資非常多筆的時候 

輸入可以考慮不要使用Scanner

輸出也可以再加快

 


題目已經提示你建立質數表,你的寫法每次都到重新計算,肯定無法通過20萬筆測資的壓力測試。

 
#9626: Re:JAVA這樣寫還是TLE


highcollege90027 (冰人雪糕)

學校 : 不指定學校
編號 : 41648
來源 : [218.161.27.179]
最後登入時間 :
2021-10-20 18:15:36
a007. 判斷質數 | From: [36.230.125.200] | 發表日期 : 2015-02-01 01:31

import java.util.Scanner;
import java.math.*;

public class JAVA {
 public static void main(String[] args)
 {
  Scanner input = new Scanner(System.in);
  int a;
  int i,j,n=0;
  String f;
  while(input.hasNext()) 
  {
   f="true";
   a=input.nextInt();
   for(i=2;i<=Math.sqrt(a);i++)
   {
    
    if(a%i==0 && a!=2)
    {
     f="false";
     System.out.println("非質數");
     break;  
    }
   }
   if(f=="true")
   {
    System.out.println("質數");
   }

  }
 }
}

 


先建表 >

 

StringBuffer >

BufferedReader >

這樣會比較快,

你的質數演算也可以先捨棄偶數,

從奇數開始 += 2 上限到你的sqrt,

有解 

 
ZeroJudge Forum