summaryrefslogtreecommitdiffstats
path: root/mat/euler/2/prog.c
blob: 607417c3432b45294b5039ef9899c6d95acabfd8 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
#include <stdio.h>
#include <stdlib.h>
int main (int argc, char ** argv) {
	if (argc != 1+2) {
		fprintf(stderr, "uporaba: %s <max> <delitelj>\nprimer, ki sešteje vsa liha fibonačijeva števila do 2M: %s 2000000 -2\nče je deljenec negativen, se seštejejo števila, ki NISO deljiva z deliteljem\n", argv[0], argv[0]);
		return 1;
	}
	unsigned long int s = strtoll(argv[1], NULL, 10); // makSimalno
	unsigned long int d = strtoll(argv[2], NULL, 10); // Delitelj
	unsigned short int o = (llabs(d) == d);
	d = llabs(d);
	unsigned long int i = 1;
	unsigned long int j = 2;
	unsigned long int c = 0; // Carry
	unsigned long int e = 0; // sEštevek
	while (i <= s) {
		fprintf(stderr, "i = %ld, seštevek = %ld\n", i, e);
		if (o) {
			if (i % d == 0) {
				e = e + i;
			}
		} else {
			if (i % d != 0) {
				e = e + i;
			}
		}
		c = i + j;
		i = j;
		j = c;
	}
	fprintf(stdout, "\rseštevek števil do %ld, ki z %ld %s deljiva: %ld\n", s, d, o ? "so" : "niso", e);
	return 0;
}