close
- 輸入某數,印出小於該數之所有質數、質數個數、最大質數
import java.util.Scanner;public class P5418 { public static void main(String[] args) { Scanner scn = new Scanner(System.in); System.out.println("請輸入一個正整數:"); int input = scn.nextInt(); // count 被整除之次數 // sum 質數個數 // max 質數最大值 int count, sum, max; count = sum = max = 0; // 判斷輸入數字是否為正整數 // 附條件無限迴圈,停止條件成立,終止迴圈 for (int i = 1; i > 0; i++) { // 輸入0或負數,重新輸入 if (input < 1) { System.out.println("請輸入大於0之正整數:"); input = scn.nextInt(); } else { // 輸入正數,i值改為-1,停止迴圈 i = -1; System.out.println("您輸入之數字為 " + input); System.out.print("質數有:"); scn.close(); } } // 判斷質數 // i迴圈為界定數字範圍,輸入100,即從1測試至100(小於100之數字) for (int i = 1; i <= input; i++) { // count值為共用,判斷前須先將count值歸0 count = 0; // j迴圈,判斷數字(i值)是否為質數 // 如i=5,由1測試至5(j=1,j<=i) // 若能整除,count值加1,質數只能被1和質數本身整除 // 5若為質數,只能被1和5整除,count值必不大於3 for (int j = 1; j <= i; j++) { if (i % j == 0) { count++; } } // 印出count值小於3之i值(即質數) // sum值加1,i值指定給max if (count < 3) { System.out.print(" " + i + " "); sum++; // i值由小至大,最後之i值必為最大之質數 max = i; } } System.out.println(); System.out.println("小於 " + input + " 的質數共有 " + sum + " 個"); System.out.println("最大質數為 " + max); }}
- 輸出結果:
請輸入一個正整數:1000您輸入之數字為 1000質數有: 1 2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97 101 103 107 109 113 127 131 137 139 149 151 157 163 167 173 179 181 191 193 197 199 211 223 227 229 233 239 241 251 257 263 269 271 277 281 283 293 307 311 313 317 331 337 347 349 353 359 367 373 379 383 389 397 401 409 419 421 431 433 439 443 449 457 461 463 467 479 487 491 499 503 509 521 523 541 547 557 563 569 571 577 587 593 599 601 607 613 617 619 631 641 643 647 653 659 661 673 677 683 691 701 709 719 727 733 739 743 751 757 761 769 773 787 797 809 811 821 823 827 829 839 853 857 859 863 877 881 883 887 907 911 919 929 937 941 947 953 967 971 977 983 991 997 小於 1000 的質數共有 169 個 最大質數為 997
文章標籤
全站熱搜
留言列表