Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
61
Task/Jacobsthal-numbers/C/jacobsthal-numbers.c
Normal file
61
Task/Jacobsthal-numbers/C/jacobsthal-numbers.c
Normal file
|
|
@ -0,0 +1,61 @@
|
|||
#include <stdio.h>
|
||||
#include <gmp.h>
|
||||
|
||||
void jacobsthal(mpz_t r, unsigned long n) {
|
||||
mpz_t s;
|
||||
mpz_init(s);
|
||||
mpz_set_ui(r, 1);
|
||||
mpz_mul_2exp(r, r, n);
|
||||
mpz_set_ui(s, 1);
|
||||
if (n % 2) mpz_neg(s, s);
|
||||
mpz_sub(r, r, s);
|
||||
mpz_div_ui(r, r, 3);
|
||||
}
|
||||
|
||||
void jacobsthal_lucas(mpz_t r, unsigned long n) {
|
||||
mpz_t a;
|
||||
mpz_init(a);
|
||||
mpz_set_ui(r, 1);
|
||||
mpz_mul_2exp(r, r, n);
|
||||
mpz_set_ui(a, 1);
|
||||
if (n % 2) mpz_neg(a, a);
|
||||
mpz_add(r, r, a);
|
||||
}
|
||||
|
||||
int main() {
|
||||
int i, count;
|
||||
mpz_t jac[30], j;
|
||||
printf("First 30 Jacobsthal numbers:\n");
|
||||
for (i = 0; i < 30; ++i) {
|
||||
mpz_init(jac[i]);
|
||||
jacobsthal(jac[i], i);
|
||||
gmp_printf("%9Zd ", jac[i]);
|
||||
if (!((i+1)%5)) printf("\n");
|
||||
}
|
||||
|
||||
printf("\nFirst 30 Jacobsthal-Lucas numbers:\n");
|
||||
mpz_init(j);
|
||||
for (i = 0; i < 30; ++i) {
|
||||
jacobsthal_lucas(j, i);
|
||||
gmp_printf("%9Zd ", j);
|
||||
if (!((i+1)%5)) printf("\n");
|
||||
}
|
||||
|
||||
printf("\nFirst 20 Jacobsthal oblong numbers:\n");
|
||||
for (i = 0; i < 20; ++i) {
|
||||
mpz_mul(j, jac[i], jac[i+1]);
|
||||
gmp_printf("%11Zd ", j);
|
||||
if (!((i+1)%5)) printf("\n");
|
||||
}
|
||||
|
||||
printf("\nFirst 20 Jacobsthal primes:\n");
|
||||
for (i = 0, count = 0; count < 20; ++i) {
|
||||
jacobsthal(j, i);
|
||||
if (mpz_probab_prime_p(j, 15) > 0) {
|
||||
gmp_printf("%Zd\n", j);
|
||||
++count;
|
||||
}
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue