μλλ μμ ꡬνκΈ°(1)μμ νλ μ΄μΌκΈ°μ μμ½μ λλ€. (μ°Έκ³ : https://unounou.tistory.com/5)
<μμ°μ nμ΄ μμμΈμ§ νλ³νλ λ°©λ²>
2 μ΄μ n-1 μ΄νμ λͺ¨λ μ μλ‘ λλμμ λ λλμ΄ λ¨μ΄μ§μ§ μλλ€. (1) ↓ 2 μ΄μ n-1 μ΄νμ λͺ¨λ μμλ‘ λλμμ λ λλμ΄ λ¨μ΄μ§μ§ μλλ€. (2) |
7μ΄ 2λ‘ λλμ΄ λ¨μ΄μ§μ§ μλλ€λ©΄, 2μ λ°°μμΈ 4μ 6μΌλ‘λ λλμ΄ λ¨μ΄μ§μ§ μμ΅λλ€.
7%2 7%3 7%4 → λΆνμν μ°μ° 7%5 7%6 → λΆνμν μ°μ° |
λ°©λ²(1)μμλ μμ λλμ μ μ λΆ νμ§λ§ μ΄ μ€μλ λΆνμν μ°μ°μ΄ μ‘΄μ¬ν©λλ€. 7%4μ 7%6μ λλ€. μ¦, λ°©λ²(1)μμ λΆνμν μ°μ°μ μ κ±°ν κ²μ΄ λ°©λ²(2)μ λλ€. λ± λ΄λ κ·Έλ μ§λ§ λ°©λ²(2)κ° λ μ΄λ ΅μ΅λλ€. νμ§λ§ μ΄λ €μΈ μλ‘ μ°¨λΆν, μ°¨κ·Όμ°¨κ·Ό!
μ΄ λ°©λ²μ 'μλΌν μ€ν λ€μ€μ 체'λ₯Ό μ΄μ©νμμ΅λλ€.
μλ κ·Έλ¦Όμ 'μλΌν μ€ν λ€μ€μ 체'μΈλ°, μ΄ κ°λ μ μ΄μ©ν΄μ μλΌν μ€ν λ€μ€κ° μμλ₯Ό κ±Έλ¬λ΄λ λ°©λ²μ λ°λͺ νμ΅λλ€. μ κΈ°μ΅μλ μ€1 κ΅μ‘κ³Όμ μ μμλ κ² κ°λ€μ.
μ°μ μμλ₯Ό μ°Ύμ νμ νμνκ³ , μμμ λ°°μλ€μ μ°¨λ‘λ‘ μ§μλκ°λ λ°©λ²μ λλ€. λκΉμ§ μ§μμ§μ§ μκ³ λ¨μμλ κ²μ΄ μμμ λλ€. μ΄λ₯Ό μ΄μ©ν κ²μ΄ λ°©λ²(2)μ λλ€.
μλΌν μ€ν λ€μ€μ 체 - μν€λ°±κ³Ό, μ°λ¦¬ λͺ¨λμ λ°±κ³Όμ¬μ
μν€λ°±κ³Ό, μ°λ¦¬ λͺ¨λμ λ°±κ³Όμ¬μ . μνμμ μλΌν μ€ν λ€μ€μ 체λ μμ(η΄ ζΈ, λ°μ: [μμ€])λ₯Ό μ°Ύλ λ°©λ²μ΄λ€. κ³ λ κ·Έλ¦¬μ€ μνμ μλΌν μ€ν λ€μ€κ° λ°κ²¬νμλ€. μκ³ λ¦¬μ¦[νΈμ§] 2λΆν° μμλ₯Ό οΏ½
ko.wikipedia.org
μλΌν μ€ν λ€μ€μ 체λ₯Ό ν΅ν΄ μμλ₯Ό ꡬνλ 건 λΉ λ₯΄κ³ μ½μ§λ§ μ½λλ‘ μ§λ 건 μ½μ§ μμ΅λλ€.
μλ° μ½λλ₯Ό μ΄ν΄λ³΄λλ‘ νκ² μ΅λλ€.
public static void main(String[] args) {
int cnt = 0; //λλμ
νμ
int primeCnt = 0; //μ°Ύμ μμμ κ°μ(λ°°μ΄ μΈλ±μ€ μ§μ νκΈ° μν¨)
int[] prime = new int[250]; //μμ μ μ₯
prime[primeCnt++] = 2;
//prime[0]μ μ΅μ΄μ μμ 2λ₯Ό μ§μ΄λ£κ³ , primeCntκ°μ 1μ΄ λλ€.
/*μλ forλ¬Έμμ λ°°μ΄μ μμλ₯Ό μ§μ΄λ£μ κ²μ΄μ§λ§, n=3λΆν° μ€νν κ²μ΄κΈ° λλ¬Έμ
2λ forλ¬Έμμ μ§μ΄λ£μ μ μλ€.
λ°λΌμ forλ¬Έμ λ€μ΄κ°κΈ° μ μ prime[0]=2λ₯Ό λμ
νκ³ λ°λ³΅λ¬Έμ μννλ κ²μ΄λ€.
*/
for(int n=3; n<=500; n+=2) { //3, 5, 7... λ± 3 μ΄μμ νμ nμ λν΄μλ§ μ€ν
int i;
for(i=1; i<primeCnt; i++) {
cnt++; //λλμ
μ€νν κ²μ΄λ―λ‘ +1
if(n%prime[i] == 0) break;
}
if(primeCnt == i) {
prime[primeCnt++] = n;
}
}
for(int i=0; i<primeCnt; i++) {
System.out.println(prime[i]); //λ°°μ΄μ λ΄κΈ΄ μμ μΆλ ₯
}
System.out.println("λλμ
νμ : " + cnt);
}
<μ€ν κ²°κ³Ό>
2 3 5 ...(μ€λ΅)... 491 499 λλμ νμ : 4684 |
λλμ νμκ° νμ ν μ€μ΄λ€μμ΅λλ€! (λ°©λ²(1)μ λλμ νμ : 22279)
μ±λ₯μ΄ ν¨μ¬ μ’μμ‘λ€λ κ²μ΄ 보μ λλ€. μ§κΈμ nμ κ°μ΄ 500μ΄λΌμ μ€ν μλμ ν° μ°¨μ΄λ μ λ보μ λλ€λ§, nμ κ°μ΄ ν¬λ©΄ ν΄ μλ‘ ν¨μ¨μ΄ μ’μμ§λ κ²μ 체κ°ν μ μμ κ²μ λλ€.
μκ³ λ¦¬μ¦μ λν΄ κ°λ¨ν μ€λͺ ν΄ λ³΄κ² μ΅λλ€.
nμ 2 μ΄μ n-1 μ΄νμ μμλ‘ λλκΈ° μν΄μλ, μμλ₯Ό μ μ₯νλ λ°°μ΄μ΄ νμν©λλ€. μμλ₯Ό μ°Ύμμ int[] prime λ°°μ΄μ 차곑차곑 μ§μ΄λ£μ΅λλ€. λ°°μ΄μ ν¬κΈ°κ° 250μΈ μ΄μ λ 500κ°μ μμ°μ μ€μμ νμμ κ°μκ° 250κ°μ΄κΈ° λλ¬Έμ λλ€. μ νμμ κ°μλ₯Ό μκ°ν κΉμ? κ·Έ μ΄μ λ, 2λ μ΅μ΄μ μμμ΄λ©΄μ λμμ μ μΌν μ§μμΈ μμμ΄κΈ° λλ¬Έμ λλ€. 4, 6, 8... λ± λλ¨Έμ§ μ§μλ μμκ° μλλλ€. λ°λΌμ 2 μ΄μμ μ§μλ μ λλ‘ λ°°μ΄μ λ€μ΄κ° νλ³΄κ° λ μ μμ΅λλ€. μ¬λ―Έμμ§ μλμ? γ γ
λ°λ³΅λ¬Έμ λ€μ΄κ°κΈ° μ μ λ°°μ΄μ 2λ₯Ό μ μ₯ν μ΄μ λ κ·Έ λλ¬Έμ λλ€. λ°λ³΅λ¬Έμμλ 3 μ΄μμ νμλ§ μμμ ν보λ‘μ νλ¨ν κ²μ΄κΈ° λλ¬Έμ prime[0]μ 미리 2λ₯Ό μ μ₯ν μμ λ°λ³΅λ¬Έμ μνν©λλ€.
prime[0]μ 2κ° λ΄κ²Όμ§λ§ iκ°μ΄ 0μ΄ μλ 1λΆν° λλμ μ νλ μ΄μ λ, nμ νμμ΄κΈ° λλ¬Έμ n%2==0μ΄ λ μκ° μκΈ° λλ¬Έμ λλ€. λ¬Όλ‘ iκ°μ 0λΆν° ν΄λ μμ ꡬνλ λ°μ λ¬Έμ λ μκ² μ΅λλ€λ§ μ±λ₯μλ λ μ’μ§ μμ κ²μ λλ€. λ°λΌμ prime[0]μ΄ μλ, prime[1]λΆν° λλμ μ μνν©λλ€. (prime[0]==2, prime[1]==3μ λλ€.)
λλμ΄ λ¨μ΄μ§λ μκ°μ΄ μκΈ°λ©΄ breakλ¬Έμ λ§λ λ°λ³΅λ¬Έμ΄ μ’ λ£λκ³ , nκ°μ +2λ₯Ό ν΄μ λ€λ₯Έ νμμ λν΄μ νλ¨μ μμν©λλ€. λλμ΄ λ¨μ΄μ§μ§ μμΌλ©΄ breakλ¬Έμ λ§λμ§ μκ³ μμμΈ κ²μ΄ νλ³λ©λλ€. ifλ¬Έμ λ§λ prime λ°°μ΄μ ν΄λΉ μμλ₯Ό μ§μ΄λ£κ² λ©λλ€. κ·Έ ν primeCnt++ νμ μ°μ°μ μννμ¬ primeCnt κ°μ΄ +1 λ©λλ€. κ·ΈλμΌ λ°°μ΄μ μΈλ±μ€ λ²νΈκ° νλ μ¦κ°νκ³ κ·Έ ν λ°°μ΄μ κ°μ λμ ν μ μκ² λ©λλ€.
μ΄ν΄κ° μ μ λλ©΄ κΌ μ’ μ΄μ μ¨μ νμΈν΄ 보μκΈΈ λ°λλλ€.
λ°©λ²(1)보λ€λ λ°©λ²(2)κ° ν¨μ¨μ΄ μ’μ§λ§, λΉ λ₯Έ μκ³ λ¦¬μ¦μ΄λΌκ³ ν΄μ λͺ¨λ μ μ΄ λ€ μ’μ κ²μ μλλλ€. μ΄ λ°©λ²μ κ²½μ° λ°°μ΄μ μμλ₯Ό ν λΉν΄μΌ νκΈ° λλ¬Έμ, λ§μ λ©λͺ¨λ¦¬λ₯Ό μꡬν©λλ€.
λ€μ ν¬μ€ν μμλ μ΄λ₯Ό κ°μ ν λ€λ₯Έ μκ³ λ¦¬μ¦μ μκ°νλλ‘ νκ² μ΅λλ€.
Do it! μλ£κ΅¬μ‘°μ ν¨κ» λ°°μ°λ μκ³ λ¦¬μ¦ μ λ¬Έ μλ° νΈμ μ½κ³ μ 리ν κ²μκΈμ λλ€.
μ± μ κ°λ μ λ°νμΌλ‘ μκ°μ μΆκ°νμ¬ μμ±νμμ΅λλ€.
'π»Study > Java' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[μκ³ λ¦¬μ¦] μ€λ ꡬνκΈ° (0) | 2020.08.12 |
---|---|
[μκ³ λ¦¬μ¦] μμ ꡬνκΈ°(3) - μλΌν μ€ν λ€μ€μ μ κ·Ό (0) | 2020.08.05 |
[μκ³ λ¦¬μ¦] μμ ꡬνκΈ°(1) (0) | 2020.08.05 |
μμ μ μμ κΈΈμ΄ κ΅¬νκΈ° (0) | 2020.08.04 |
String.formatκ³Ό System.out.printf (0) | 2020.08.04 |