A solution with no loops
Leçon 3 sur 20 du cours Énigmes mathématiques de Coddy.
Le défi précédent est facilement résolu en utilisant des boucles. Cependant, si N est grand - par exemple N=10**9 - le temps d'exécution pourrait être long, très long.
Si vous avez résolu le défi précédent sans boucles - c'est génial, et vous êtes très bon, tant en programmation qu'en mathématiques. Si vous ne l'avez pas fait, cette leçon est pour vous.
Une autre façon consiste à calculer directement la somme de chaque suite arithmétique.
Si vous connaissez le premier terme, a1, le dernier terme, an, et le nombre de termes, n, la somme est :
S = n * (a1+an)//2
Défi
FacileUtilisez la formule de la somme pour calculer la solution du défi.
Écrivez une fonction calc qui prend un entier N en entrée et retourne la somme des multiples de 3 ou 5 inférieurs à N .
Par exemple pour N=10 la fonction retournera 23
Conseil - Séparez votre code en plus petites fonctions.
Essayez vous-même
#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;
}