A solution with no loops
Lição 3 de 20 do curso Enigmas Matemáticos da Coddy.
O desafio anterior é facilmente resolvido usando loops. No entanto, se N for grande - por exemplo N=10**9 - o tempo de execução pode ser longo, muito longo.
Se você resolveu o desafio anterior sem loops - isso é ótimo, e você é muito bom, tanto em programação quanto em matemática. Se não resolveu, esta lição é para você.
Outra maneira é calcular diretamente a soma de cada progressão aritmética.
Se você conhece o primeiro termo, a1, o último termo, an, e o número de termos, n, a soma é:
S = n * (a1+an)//2
Desafio
FácilUse a fórmula da soma para calcular a solução para o desafio.
Escreva uma função calc que recebe um número inteiro N como entrada e retorna a soma de todos os múltiplos de 3 ou 5 abaixo de N.
Por exemplo, para N=10 a função retornará 23
Dica - Separe seu código em funções menores.
Experimente você mesmo
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <stdbool.h>
#include "solution.h"
int main() {
int n;
if (scanf("%d", &n) != 1) n = 0;
int r = calc(n);
printf("%d\n", r);
return 0;
}