思路:如果一个数不是素数,那么这个数一定是n个素数的乘积(0和1除外),同理,素数的 k倍数一定是合数(k >= 2)
public static
void
isprime
(
int
n
){
boolean
[]
isprime
=
new
boolean
[
n
+
1
];
//false
表示素数,
true
表示合数
for
(
int
i
=
2
;
i
*
i
<=
n
;
i
++
){
if
(
!
isprime
[
i
]){
//i
是质数
for
(
int
j
=
2
;
j
*
i
<=
n
;
j
++
){
isprime
[
i
*
j
]
=
true
;
}
//
将
i
的倍数全部标记为合数
}
}
for
(
int
i
=
2
;
i
<=
n
;
i
++
){
if
(
!
isprime
[
i
]){
System
.
out
.
println
(
i
);
}
}
}
本篇算法指导老师李昌晋