Gaußsche Summenformel
Nachdem ich bei einer kleinen Hilfestellung für eine Challenge festgestellt hab, dass ich den damals verwendeten Code nicht wiederfinde, hab ich mich dran gesetzt und den zur Lösung benötigten "kleinen Gauß" in C (mit GMP – The GNU Multiple Precision Arithmetic Library ) und Perl implementiert.
Der Code in C bzw. Perl sieht wie folgt aus:
C
#include <stdio.h>
#include <stdlib.h>
#include <gmp.h>
int main (int argc, char **argv) {
if (argc < 2) {
printf ("USAGE: %s numbern",argv[0]);
return EXIT_FAILURE;
}
#include <stdlib.h>
#include <gmp.h>
int main (int argc, char **argv) {
if (argc < 2) {
printf ("USAGE: %s numbern",argv[0]);
return EXIT_FAILURE;
}
mpz_t n,m,s,t,div,solution;
mpz_init(m);
mpz_init(n);
mpz_init(s);
mpz_init(t);
mpz_init(div);
mpz_init(solution);
mpz_set_str(n, argv[1],10);
mpz_set_str(s, "1",10);
mpz_set_str(div, "2",10);
mpz_add(t, n, s);
mpz_mul(m, t, n);
mpz_fdiv_q(solution, m, div);
gmp_printf("%Zdn",solution);
mpz_clear(m);
mpz_clear(n);
mpz_clear(s);
mpz_clear(t);
mpz_clear(div);
mpz_clear(solution);
return EXIT_SUCCESS;
}
mpz_init(n);
mpz_init(s);
mpz_init(t);
mpz_init(div);
mpz_init(solution);
mpz_set_str(n, argv[1],10);
mpz_set_str(s, "1",10);
mpz_set_str(div, "2",10);
mpz_add(t, n, s);
mpz_mul(m, t, n);
mpz_fdiv_q(solution, m, div);
gmp_printf("%Zdn",solution);
mpz_clear(m);
mpz_clear(n);
mpz_clear(s);
mpz_clear(t);
mpz_clear(div);
mpz_clear(solution);
return EXIT_SUCCESS;
}
Perl
#!/usr/bin/perl
#Gaussche Summenformel
use strict;
use bigint;
my $n = $ARGV[0];
my $solution;
$solution = ($n*($n+1))/2;
printf ("Loesung: $solution");
use bigint;
my $n = $ARGV[0];
my $solution;
$solution = ($n*($n+1))/2;
printf ("Loesung: $solution");
Ein paar zusätzliche Informationen dazu gibt es im Wiki: hier ;)
Comments
Display comments as Linear | Threaded