点击链接跳转
挺灰心的,害!
关于换行输出:可以很好的利用count计数来判断,不用额外增加变量。
错误的
package pat; import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); int m = scanner.nextInt(); int n = scanner.nextInt(); int count=0;//计数生成的素数个数 StringBuilder sb = new StringBuilder(); int prime=3;//错误点二 int newline=0; //素数生成器 while (count<=n-2) {//错误点三 if (isPrime(prime)){ count++; if (count>=m-1){//错误点三 sb.append(prime+" "); newline++;//累积换行输出 if (newline%10==0) { System.out.println(sb.toString().trim()); sb=new StringBuilder(); }else if(count==n-1){//最后一次的输出 System.out.print(sb.toString().trim()); } } } prime+=2;//错误点二 } } //完整的判断素数 public static boolean isPrime(int num){ if (num<3) return false;//错误点一 if (Math.sqrt(num)<3&&num%2==0) return false; for (int j=3;j<=Math.sqrt(num);j+=2){ if (num%j==0||num%2==0){ return false; } } return true; } }
修改后正确的
package pat; import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); int m = scanner.nextInt(); int n = scanner.nextInt(); int count=0;//计数生成的素数个数 int prime=0;//递增的素数 //素数生成器 while (count<n) { if (isPrime(prime)){ count++; if (count>=m){ if ((count-m+1)%10==0||count==n) {//当数字末尾时或最后一个数字时,换行 System.out.println(prime); }else System.out.print(prime+" "); } } prime++; } } //完整的判断素数(2是素数) public static boolean isPrime(int num){ if (num==1) return false; if (num%2==0&&num!=2) return false;//不是偶数,排除2 for (int j=3;j<=Math.sqrt(num);j+=2){ if (num%j==0){ return false; } } return true; } }