2011-01-09 3 views
0

이 소수형 체 동화 알고리즘을 작성 했으므로 올바르게 실행되지 않습니다. 알고리즘 자체에서 오류를 찾을 수 없습니다. 누군가 나를 도울 수 있습니까? 이 그것이 인쇄를 해야하는 것입니다잘못된 소수 번호 알고리즘이 적용됩니다.

: 대

[2 3 5 7 11 13 17 19 23 29] 

무엇 실제로 인쇄 :

[3 5 7 11 13 17 19 23 25 29] 

.

package main 

import "fmt" 

func main() { 
var primes = sieve(makeNumbers(29)) 
fmt.Printf("%d\n", primes); 
} 

func makeNumbers(n int) []int { 
var numbers = make([]int, n - 1) 
for i := 0; i < len(numbers); i++ { 
    numbers[i] = i + 2 
} 
return numbers 
} 

func sieve(numbers []int) []int { 
var numCopy = numbers 
var max = numbers[len(numbers)-1] 
var sievedNumbers = make([]int, 0) 
for i := 0; numCopy[i]*numCopy[i] <= max; i++ { 
    for j := i; j < len(numCopy); j++ { 
    if numCopy[j] % numCopy[i] != 0 || j == i { 
    sievedNumbers = append(sievedNumbers, numCopy[j]) 
    } 
    } 
    numCopy = sievedNumbers 
    sievedNumbers = make([]int, 0) 
} 
return numCopy 
} 

답변

3

"for j : = i"대신 "for j : = 0"이어야합니다.