0

I am trying to check if a number is a multiple of 3 or 5 or both in which different vaues would be printed. I am able to get the values running but checking for both does not seem to give the expected result.

here is my code and response

func fizzBuzz(n: Int) -> Void {
    let value = n
    for i in 1...value{
        if(i.isMultiple(of: 5)){
            print("Buzz")
        } else if(i.isMultiple(of: 3)){
            print("Fizz")
        } else if (i.isMultiple(of: 5)) && (i.isMultiple(of: 3)){
            return print("FizzBuzz")
        } else {
            print(i)
        }
    }

}

fizzBuzz(n: 15)

the response

1
2
Fizz
4
Buzz
Fizz
7
8
Fizz
Buzz
11
Fizz
13
14
Buzz
King
  • 1,885
  • 3
  • 27
  • 84

2 Answers2

1

Check first multiple of both

func fizzBuzz(n: Int) -> Void {
    for i in 1...n {
        if i.isMultiple(of: 15) {
            print("FizzBuzz")
        } else if i.isMultiple(of: 5) {
            print("Buzz")
        } else if i.isMultiple(of: 3) {
            print("Fizz")
        } else {
            print(i)
        }
    }
}

fizzBuzz(n: 15)

Response

1
2
Fizz
4
Buzz
Fizz
7
8
Fizz
Buzz
11
Fizz
13
14
FizzBuzz
Cruz
  • 2,602
  • 19
  • 29
1

Here is the answer based on the above.

func fizzBuzz(n: Int) {

    let value = n

    for i in 1...value {

        // The number is multiple of 3 and 5
        if (i.isMultiple(of: 15)) {
            print("FizzBuzz")
        }
        // The number is multiple of 5
        else if(i.isMultiple(of: 5)){
            print("Buzz")
        }
        // The number is multiple of 3
        else if(i.isMultiple(of: 3)){
            print("Fizz")
        }
        else {
            print(i)
        }
    }
}

fizzBuzz(n: 15)
shbedev
  • 1,875
  • 17
  • 28