глава 1.2.6, реализация малой теоремы ферма на схеме. ввиду остуствия собственного мозга, но желания разобраться загнал код в drScheme. он мне выдает в качестве результата некое #t. что это значит? О_о
вопрос снят: A #t or #T is the complete input syntax for the boolean constant true, and #f or #F is the complete input syntax for the boolean constant false.
ну и подскажите еще, сломал голову, что я сделал неправильно вот в этом коде, пытаясь переложить на си?:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
unsigned int involution(int number, int power);
int random_less_number(int n);
int main(int argc, char** argv)
{
int m, a, n;
n = 331;
a = random_less_number(n);
m = (involution(a, (n-1)) - a) % n;
printf("%d\n", m);
return 0;
}
unsigned int involution(int number, int power){
int i;
unsigned int involution_number = number;
for(i = 2; i <= power; ++i){
involution_number = involution_number * number;
}
return involution_number;
}
int random_less_number(int n){
int random_number;
srandom(time(NULL));
while (random_number >= n || random_number == 0){
random_number = random() % 100;
}
return random_number;
}
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
unsigned int involution(int number, int power);
int random_less_number(int n);
int main(int argc, char** argv)
{
int m, a, n;
n = 331;
a = random_less_number(n);
m = (involution(a, (n-1)) - a) % n; // сфигли?
//(involution(a, (n-1)) - 1) % n
//должно было бы быть, но уже даже 2^330 вылезет за int докуя раз
printf("%d\n", m);
return 0;
}
unsigned int involution(int number, int power){
int i;
unsigned int involution_number = number;
for(i = 2; i <= power; ++i){
involution_number = involution_number * number;
}
return involution_number;
}
//умолчим, что никогда не вернет число 100 и больше и вообще криво.
int random_less_number(int n){
int random_number;
srandom(time(NULL));
while (random_number >= n || random_number == 0){
random_number = random() % 100;
}
return random_number;
}
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
unsigned int involution(int number, int power, int m);
int random_less_number(int n);
int main(int argc, char** argv)
{
int m, a, n;
n = 331;
a = random_less_number(n);
m = involution(a, (n-1), n) - 1;
printf("%d\n", m);
return 0;
}
unsigned int involution(int number, int power, int m){
//но так все равно никто степень не считает =)
int i;
unsigned int involution_number = 1;
for(i = 1; i <= power; ++i){
involution_number = (involution_number * number) %m;
}
return involution_number;
}
int random_less_number(int n){
srandom(time(NULL));
return (random() % (n-1)) +1;
}