>

2 양의 정수를 취하고 그 사이의 모든 소수를 인쇄하고 소수 인 경우 2 개의 숫자도 포함하는 함수를 작성하려고합니다. 이것은 내가 현재 가지고있는 것이지만 첫 번째 숫자는 소수이고 나머지는 그렇지 않습니다. 다른 사이트에서도 비슷한 논리를 사용하기 때문에이 코드를 온라인에서 찾아 본 결과이 코드의 문제점을 파악할 수 없습니다.

func printPrimes(from firstNum: Int, to lastNum: Int) {
    var newFirstNum = firstNum
    if firstNum == 0 {
        newFirstNum = 2
    }

    let numbers = newFirstNum...lastNum

    // Goes through each number from 2-100 starting from 2.
    for number in numbers {
        var primeValue = false
        let startPoint = 2
        let number2 = startPoint...number
        // Takes current number and divides by every number from 2 to the given number.
        for currentIndex in number2 {
            primeValue = false
            if number % currentIndex != 0 {
                primeValue = true
            }
        }
            if primeValue == false {
                print("\(number) is not prime")
            } else {
                print("\(number) is prime")
            } 
    } 
}

이것은 내가 사용하는 함수 호출 유형입니다 :

printPrimes(from: 0, to: 100)

도움을 주시면 감사하겠습니다.


  • 답변 # 1

    몇 가지 문제가 있습니다. 주로 primeValue 설정  모두 잘못되었습니다. 먼저 그것을 false로 설정하십시오. 그런 다음 이미 숫자가 소수라고 판단하더라도 시도하려는 모든 요소에 대해 false로 재설정합니다.

    인자를 찾을 때까지 숫자가 소수라고 가정하는 것이 좋습니다. 또한 숫자 자체를 확인하지 않아야합니다.

    고정 코드는 다음과 같습니다.

    func printPrimes(from firstNum: Int, to lastNum: Int) {
        var newFirstNum = firstNum
        if firstNum == 0 {
            newFirstNum = 2
        }
        let numbers = newFirstNum...lastNum
        // Goes through each number from 2-100 starting from 2.
        for number in numbers {
            var primeValue = true // assume prime unless we find a factor
            let startPoint = 2
            let number2 = startPoint..<number // Don't include number
            // Takes current number and divides by every number from 2 to the given number.
            for currentIndex in number2 {
                if number % currentIndex == 0 {
                    primeValue = false // we found a factor, not prime
                    break // no need to check for any other factors
                }
            }
            if primeValue {
                print("\(number) is prime")
            } else {
                print("\(number) is not prime")
            }
        }
    }
    printPrimes(from: 0, to: 100)
    
    

관련 자료

  • 이전 Google 캘린더 일정에 대한 링크를 어떻게 구성합니까?
  • 다음 모든 메소드가 정적 인 Java 클래스