/我买了一本书,意大利作家 保罗.乔尔达诺 得奖的一本小说,好奇这本书有多少页。但它每页页码都是质数,需求如下,1907页书,每个页数以质数命名,求有多少页。/
package funJoy;public class calBook {public static void main(String[] args) {int sum = 0;for (int i = 1; i <= 1907;i ++){if (calculate(i) != 0){System.out.println(i);sum ++;}}//加上一个2,这一页,质数的个数就是书的页数,结果是292页System.out.println("质数的个数是" + (sum + 1));}//可是它不能判断2。1不是质数static int calculate(int n){int cal = 0;int sum = 0;for (int i = 2; i < n; i++) {if (n%i == 0){cal ++; //cal 会被整除,n不是质数,所以cal会自动增加 } else {//从2到这个数,都不能被整除,才是质数...sum ++;}}if (cal == 0)//是质数return sum;else return 0;}}
结果如下:
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
1009
1013
1019
1021
1031
1033
1039
1049
1051
1061
1063
1069
1087
1091
1093
1097
1103
1109
1117
1123
1129
1151
1153
1163
1171
1181
1187
1193
1201
1213
1217
1223
1229
1231
1237
1249
1259
1277
1279
1283
1289
1291
1297
1301
1303
1307
1319
1321
1327
1361
1367
1373
1381
1399
1409
1423
1427
1429
1433
1439
1447
1451
1453
1459
1471
1481
1483
1487
1489
1493
1499
1511
1523
1531
1543
1549
1553
1559
1567
1571
1579
1583
1597
1601
1607
1609
1613
1619
1621
1627
1637
1657
1663
1667
1669
1693
1697
1699
1709
1721
1723
1733
1741
1747
1753
1759
1777
1783
1787
1789
1801
1811
1823
1831
1847
1861
1867
1871
1873
1877
1879
1889
1901
1907
质数的个数是292
有更好的方法,可以私信我,我这种方法感觉有一点点笨,又是调用,又是返回。