Excercises_GeorgMandl/BSP_1_C/bsp_1_c.cpp

48 lines
1.4 KiB
C++
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#include "bsp_1_c.h"
long long int fkt1(const long long int n)
{
long long int sum1, sum2, sum3, sum;
sum1 = 0;
for (long long int k = 3; k<= n; k = k+3) // Summation der Vielfachen von 3, die kleinergleich n sind
{
sum1 = sum1 + k;
}
sum2 = 0;
for (long long int k = 5; k<= n; k = k+5) // Summation der Vielfachen von 5, die kleinergleich n sind
{
sum2 = sum2 + k;
}
sum3 = 0;
for (long long int k = 15; k<= n; k = k + 3*5) // Summation der Vielfachen von 15, die kleinergleich n sind
{
sum3 = sum3 + k;
}
// addieren die Vielfachen von 3 und 5, müssen die Vielfachen von 15 aber abziehen, da diese
// sowohl bei sum1 als auch sum2 mitgezählt wurden (doppelt gezählt)
sum = sum1 + sum2 - sum3;
return sum;
}
// berechnet die gesuchte Summe ausschließlich nach einer Formel / ohne loops
long long int fkt2(const long long int n)
{
// Berechnung via Formel
// schreibt Summe der durch 3 teilbaren Zahlen an, hebt 3 heraus und braucht dann nur mehr
// die Summe von 1 bis n/3 abgerundet zu addieren; hierfür verwende die Gauß´sche Summenformel
// und integer Division; analog für 5 und 15
long long int sum1, sum2, sum3, sum;
sum1 = 3*(n/3)*(n/3+1)/2;
sum2 = 5*(n/5)*(n/5+1)/2;
sum3 = 15*(n/15)*(n/15+1)/2;
sum = sum1 + sum2 - sum3;
return sum;
}