diff options
Diffstat (limited to 'mat/euler')
-rw-r--r-- | mat/euler/1/Makefile | 2 | ||||
-rwxr-xr-x | mat/euler/1/a.out | bin | 0 -> 8480 bytes | |||
-rw-r--r-- | mat/euler/1/prog.c | 23 | ||||
-rw-r--r-- | mat/euler/10/Makefile | 2 | ||||
-rwxr-xr-x | mat/euler/10/a.out | bin | 0 -> 8600 bytes | |||
-rw-r--r-- | mat/euler/10/prog.c | 32 | ||||
-rw-r--r-- | mat/euler/2/Makefile | 2 | ||||
-rwxr-xr-x | mat/euler/2/a.out | bin | 0 -> 8432 bytes | |||
-rw-r--r-- | mat/euler/2/prog.c | 33 | ||||
-rw-r--r-- | mat/euler/3/Makefile | 2 | ||||
-rwxr-xr-x | mat/euler/3/a.out | bin | 0 -> 8560 bytes | |||
-rw-r--r-- | mat/euler/3/prog.c | 35 | ||||
-rw-r--r-- | mat/euler/4/Makefile | 2 | ||||
-rwxr-xr-x | mat/euler/4/a.out | bin | 0 -> 8576 bytes | |||
-rw-r--r-- | mat/euler/4/prog.c | 28 | ||||
-rw-r--r-- | mat/euler/5/Makefile | 2 | ||||
-rwxr-xr-x | mat/euler/5/a.out | bin | 0 -> 8480 bytes | |||
-rw-r--r-- | mat/euler/5/prog.c | 26 | ||||
-rw-r--r-- | mat/euler/6/Makefile | 2 | ||||
-rwxr-xr-x | mat/euler/6/a.out | bin | 0 -> 8472 bytes | |||
-rw-r--r-- | mat/euler/6/prog.c | 20 | ||||
-rw-r--r-- | mat/euler/7/Makefile | 2 | ||||
-rwxr-xr-x | mat/euler/7/a.out | bin | 0 -> 8552 bytes | |||
-rw-r--r-- | mat/euler/7/prog.c | 30 | ||||
-rw-r--r-- | mat/euler/9/Makefile | 2 | ||||
-rwxr-xr-x | mat/euler/9/a.out | bin | 0 -> 8568 bytes | |||
-rw-r--r-- | mat/euler/9/prog.c | 24 |
27 files changed, 269 insertions, 0 deletions
diff --git a/mat/euler/1/Makefile b/mat/euler/1/Makefile new file mode 100644 index 0000000..2def8af --- /dev/null +++ b/mat/euler/1/Makefile @@ -0,0 +1,2 @@ +default: + gcc prog.c diff --git a/mat/euler/1/a.out b/mat/euler/1/a.out Binary files differnew file mode 100755 index 0000000..abe5144 --- /dev/null +++ b/mat/euler/1/a.out diff --git a/mat/euler/1/prog.c b/mat/euler/1/prog.c new file mode 100644 index 0000000..f152200 --- /dev/null +++ b/mat/euler/1/prog.c @@ -0,0 +1,23 @@ +#include <stdio.h> +#include <stdlib.h> +int main (int argc, char ** argv) { + if (argc != 1+3) { + fprintf(stderr, "uporaba: %s <max> <a> [b c d e ...]\nprimer, ki do 1000 izpiše večkratnike 3 ali 5: %s 1000 3 5\n", argv[0], argv[0]); + return 1; + } + unsigned long int m = strtoll(argv[1], NULL, 10); + unsigned long int * n = malloc(sizeof(unsigned long int)*argc-2); + size_t i = 0; + size_t j = 0; + unsigned long int s = 0; // Seštevek + for (i = 0; i < argc-2; i++) + n[i] = strtoll(argv[i+2], NULL, 10); + for (i = 1; i < m; i++) + for (j = 0; j < argc-2; j++) + if (i % n[j] == 0) { + s = s + i; + break; // da štejemo samo enkrat + } + fprintf(stdout, "konec. seštevek je %ld.\n", s); + return 0; +} diff --git a/mat/euler/10/Makefile b/mat/euler/10/Makefile new file mode 100644 index 0000000..20eb4bf --- /dev/null +++ b/mat/euler/10/Makefile @@ -0,0 +1,2 @@ +default: + gcc -pedantic prog.c -lm diff --git a/mat/euler/10/a.out b/mat/euler/10/a.out Binary files differnew file mode 100755 index 0000000..9a7b171 --- /dev/null +++ b/mat/euler/10/a.out diff --git a/mat/euler/10/prog.c b/mat/euler/10/prog.c new file mode 100644 index 0000000..ca82ccc --- /dev/null +++ b/mat/euler/10/prog.c @@ -0,0 +1,32 @@ +#include <stdio.h> +#include <stdlib.h> +#include <math.h> +int jePrastevilo(int u) { + if (u <= 1) // idk trebše je reku da 1 ni praštevilo, pomoje se sicer laže + return 0; // we fucked up, ne bom delal za negativne številke + if (u == 2) + return 1; + for (int i = 2; i <= ceil(sqrt(u)); i++) + if (u % i == 0) + return 0; + return 1; +} +int main (int argc, char ** argv) { + if (argc != 1+1) { + fprintf(stderr, "uporaba: %s <do katerega števila>\nprimer: %s 1000000\n", argv[0], argv[0]); + return 1; + } + int u = atoi(argv[1]); + unsigned long long int s = 0; + if (u < 1) { + fprintf(stderr, "minimalno število je 1!\n"); + return 2; + } + while (u > 1) { // js srepo zaupam žoržu, da 1 ni praštevilo. + if (jePrastevilo(u)) + s = s+u; + u--; + } + fprintf(stdout, "konec. seštevek je %lld.\n", s); + return 0; +} diff --git a/mat/euler/2/Makefile b/mat/euler/2/Makefile new file mode 100644 index 0000000..2def8af --- /dev/null +++ b/mat/euler/2/Makefile @@ -0,0 +1,2 @@ +default: + gcc prog.c diff --git a/mat/euler/2/a.out b/mat/euler/2/a.out Binary files differnew file mode 100755 index 0000000..5b7faf9 --- /dev/null +++ b/mat/euler/2/a.out diff --git a/mat/euler/2/prog.c b/mat/euler/2/prog.c new file mode 100644 index 0000000..607417c --- /dev/null +++ b/mat/euler/2/prog.c @@ -0,0 +1,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; +} diff --git a/mat/euler/3/Makefile b/mat/euler/3/Makefile new file mode 100644 index 0000000..156bc0d --- /dev/null +++ b/mat/euler/3/Makefile @@ -0,0 +1,2 @@ +default: + gcc prog.c -lm diff --git a/mat/euler/3/a.out b/mat/euler/3/a.out Binary files differnew file mode 100755 index 0000000..1cb7d86 --- /dev/null +++ b/mat/euler/3/a.out diff --git a/mat/euler/3/prog.c b/mat/euler/3/prog.c new file mode 100644 index 0000000..753b1fb --- /dev/null +++ b/mat/euler/3/prog.c @@ -0,0 +1,35 @@ +#include <stdio.h> +#include <stdlib.h> +#include <math.h> +int jePrastevilo(int u) { + if (u <= 1) + return 0; + if (u == 2) + return 1; + for (int i = 2; i <= ceil(sqrt(u)); i++) + if (u % i == 0) + return 0; + return 1; +} +int main (int argc, char ** argv) { + if (argc != 1+1) { + fprintf(stderr, "uporaba: %s <stevilo>\nprimer: %s 600851475143\n", argv[0], argv[0]); + return 1; + } + unsigned long long p = 0; + unsigned long long n = strtoll(argv[1], NULL, 10); + unsigned long long i = 1; + unsigned long long k = ceil(sqrt(n))+1; + while (i < k) { + i = i + 2; + if (!jePrastevilo(i)) + continue; + if (n % i == 0) + p = i; + if (1==1) { + fprintf(stderr, "%lld, i = %lld, k = %lld, n = %lld\r", (i/k)*100, i,k,n); + } + } + fprintf(stdout, "\rkonec. našel največje praštevilo %lld: %lld\n", n, p); + return 0; +} diff --git a/mat/euler/4/Makefile b/mat/euler/4/Makefile new file mode 100644 index 0000000..2def8af --- /dev/null +++ b/mat/euler/4/Makefile @@ -0,0 +1,2 @@ +default: + gcc prog.c diff --git a/mat/euler/4/a.out b/mat/euler/4/a.out Binary files differnew file mode 100755 index 0000000..336eb2e --- /dev/null +++ b/mat/euler/4/a.out diff --git a/mat/euler/4/prog.c b/mat/euler/4/prog.c new file mode 100644 index 0000000..151dea9 --- /dev/null +++ b/mat/euler/4/prog.c @@ -0,0 +1,28 @@ +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +int main(int argc, char ** argv) { + if (argc != 1+2) { + fprintf(stderr, "uporaba: %s <min> <max>\nprimer: %s 100 999\n", argv[0], argv[0]); + return 1; + } + size_t i, k; + unsigned long long int d = 0; + unsigned long long int j[2]; + unsigned long long int min = atoi(argv[1]); + unsigned long long int max = atoi(argv[2]); + unsigned long long int step = 1; + char s[256] = ""; + for (j[0] = min; j[0] <= max; j[0]++) + for (j[1] = min; j[1] <= max; j[1]++) { + sprintf(s, "%lld", j[0]*j[1]); + i = strlen(s); + for (k = 0; k < i; k++) + if (s[k] != s[(i-1)-k]) + break; + else if (k >= i-1 && d < j[0]*j[1]) + d = j[0]*j[1]; + } + fprintf(stdout, "konec. našel največji palindrom %lld.\n", d); + return 0; +} diff --git a/mat/euler/5/Makefile b/mat/euler/5/Makefile new file mode 100644 index 0000000..2def8af --- /dev/null +++ b/mat/euler/5/Makefile @@ -0,0 +1,2 @@ +default: + gcc prog.c diff --git a/mat/euler/5/a.out b/mat/euler/5/a.out Binary files differnew file mode 100755 index 0000000..18403da --- /dev/null +++ b/mat/euler/5/a.out diff --git a/mat/euler/5/prog.c b/mat/euler/5/prog.c new file mode 100644 index 0000000..14ce34e --- /dev/null +++ b/mat/euler/5/prog.c @@ -0,0 +1,26 @@ +#include <stdio.h> +#include <stdlib.h> +int main (int argc, char ** argv) { + if (argc != 1+1) { + fprintf(stderr, "uporaba: %s <stevilka>\nprimer: %s 20\n", argv[0], argv[0]); + return 1; + } + size_t i = 1; + size_t j = 1; + size_t m = atoi(argv[1]); + while (1) { + for (j = 1; j <= m; j++) + if (i % j != 0) + break; + else if (j >= m) { + fprintf(stdout, "našel: %ld\n", i); + return 0; + } + i++; + // fprintf(stderr, "debug: %ld\n", i); + if (i <= 1) // intager overrun + break; + } + fprintf(stderr, "ni bilo najdeno pred obratom števca. povečajte števec.\n"); + return 1; +} diff --git a/mat/euler/6/Makefile b/mat/euler/6/Makefile new file mode 100644 index 0000000..156bc0d --- /dev/null +++ b/mat/euler/6/Makefile @@ -0,0 +1,2 @@ +default: + gcc prog.c -lm diff --git a/mat/euler/6/a.out b/mat/euler/6/a.out Binary files differnew file mode 100755 index 0000000..07b6490 --- /dev/null +++ b/mat/euler/6/a.out diff --git a/mat/euler/6/prog.c b/mat/euler/6/prog.c new file mode 100644 index 0000000..5a17cea --- /dev/null +++ b/mat/euler/6/prog.c @@ -0,0 +1,20 @@ +#include <stdio.h> +#include <stdlib.h> +#include <math.h> +int main (int argc, char ** argv) { + if (argc != 1+1) { + fprintf(stderr, "uporaba: %s <koliko>\nprimer: %s 100\n", argv[0], argv[0]); + return 1; + } + unsigned long int i = 1; + unsigned long int m = atoi(argv[1]); + unsigned long long int s = 0; + unsigned long long int z = 0; + for (i = 1; i <= m; i++) { + s = s + pow(i, 2); + z = z + i; + } + z = pow(z, 2); + fprintf(stdout, "konec. %lld - %lld = %lld\n", z, s, z-s); + return 0; +} diff --git a/mat/euler/7/Makefile b/mat/euler/7/Makefile new file mode 100644 index 0000000..156bc0d --- /dev/null +++ b/mat/euler/7/Makefile @@ -0,0 +1,2 @@ +default: + gcc prog.c -lm diff --git a/mat/euler/7/a.out b/mat/euler/7/a.out Binary files differnew file mode 100755 index 0000000..a413062 --- /dev/null +++ b/mat/euler/7/a.out diff --git a/mat/euler/7/prog.c b/mat/euler/7/prog.c new file mode 100644 index 0000000..e2e31a1 --- /dev/null +++ b/mat/euler/7/prog.c @@ -0,0 +1,30 @@ +#include <stdio.h> +#include <stdlib.h> +#include <math.h> +int jePrastevilo(unsigned long long int u) { + if (u <= 1) // nah 1 ni praštevilo js sm sam neumen + return 0; // in praštevila so samo naravna, spet sem neumen + if (u == 2) + return 1; + for (int i = 2; i <= ceil(sqrt(u)); i++) + if (u % i == 0) + return 0; + return 1; +} +int main(int argc, char ** argv) { + if (argc != 1+1) { + fprintf(stderr, "uporaba: %s <st>\nprimer, ki izpiše prvih 10001 praštevil: %s 10001", argv[0], argv[0]); + return 1; + } + size_t m = atoi(argv[1]); + size_t n = 2; + size_t i = 0; + while (i < m) { + if (jePrastevilo(n)) { + fprintf(stdout, "našel %ld.: %ld\n", i+1, n); + i++; + } + n++; + } + return 0; +} diff --git a/mat/euler/9/Makefile b/mat/euler/9/Makefile new file mode 100644 index 0000000..20eb4bf --- /dev/null +++ b/mat/euler/9/Makefile @@ -0,0 +1,2 @@ +default: + gcc -pedantic prog.c -lm diff --git a/mat/euler/9/a.out b/mat/euler/9/a.out Binary files differnew file mode 100755 index 0000000..103d407 --- /dev/null +++ b/mat/euler/9/a.out diff --git a/mat/euler/9/prog.c b/mat/euler/9/prog.c new file mode 100644 index 0000000..6aee0e9 --- /dev/null +++ b/mat/euler/9/prog.c @@ -0,0 +1,24 @@ +#include <stdio.h> +#include <stdlib.h> +#include <math.h> +int main(int argc, char ** argv) { + if (argc != 1+4) { + fprintf(stderr, "uporaba: %s <sestevek a+b+c> <min> <max> <step>\nprimer: %s 1000 1 100 1\n", argv[0], argv[0]); + return 1; + } + unsigned int i; + double j[3]; + double n[1]; + double min = atoi(argv[2]); + double max = atoi(argv[3]); + double step = atoi(argv[4]); + for (i = 1; i <= 1; i++) + n[i-1] = atof(argv[i]); + for (j[0] = min; j[0] <= max; j[0]++) + for (j[1] = min; j[1] <= max; j[1]++) + for (j[2] = min; j[2] <= max; j[2]++) + if ((j[0] < j[1] < j[2]) && (j[0] + j[1] + j[2] == n[0]) + && (pow(j[0],2) + pow(j[1],2) == pow(j[2],2))) + fprintf(stdout, "našel: %f^2 + %f^2 = %f^2 ; %f+%f+%f=%f\n", j[0],j[1], j[2], j[0], j[1], j[2], j[0]+j[1]+j[2]); + return 0; +} |