Zadanie 2 #39
106
main.cpp
Normal file
106
main.cpp
Normal file
@ -0,0 +1,106 @@
|
||||
#include <iostream>
|
||||
#include <math.h>
|
||||
|
||||
using namespace std;
|
||||
|
||||
bool odwracalny(int i, int n){
|
||||
for(int x=0; x<n; x++){
|
||||
if((x * i) % n == 1){
|
||||
return true ;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
void el_odwracalne(int n){
|
||||
int lista[n];
|
||||
int index=0;
|
||||
for(int i=0; i<n; i++){
|
||||
if(odwracalny(i,n)){
|
||||
lista[index]=i;
|
||||
index++;
|
||||
}
|
||||
}
|
||||
for (int i=0; i<index; i++){
|
||||
cout << lista[i] << endl;
|
||||
}
|
||||
}
|
||||
|
||||
bool dzieli_zero(int i, int n){
|
||||
for(int x=0; x<n; x++){
|
||||
if((x * i) % n == 0){
|
||||
return true ;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void dzielniki_zera(int n){
|
||||
int lista[n];
|
||||
int index=0;
|
||||
for(int i=0; i<n; i++){
|
||||
if(dzieli_zero(i,n)){
|
||||
lista[index]=i;
|
||||
index++;
|
||||
}
|
||||
}
|
||||
for (int i=0; i<index; i++){
|
||||
cout << lista[i] << endl;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
bool nilpotent(int i, int n){
|
||||
int power=0;
|
||||
for(int x=0; x<n; x++){
|
||||
power = pow(x, i);
|
||||
if(power % n == 0){
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
void el_nilpotentne(int n){
|
||||
int lista[n];
|
||||
int index=0;
|
||||
for(int i=0; i<n; i++){
|
||||
if(nilpotent(i,n)){
|
||||
lista[index]=i;
|
||||
index++;
|
||||
}
|
||||
}
|
||||
for (int i=0; i<index; i++){
|
||||
cout << lista[i] << endl;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void el_idempotentne(int n){
|
||||
int lista[n];
|
||||
int index=0;
|
||||
for(int i=0; i<n; i++){
|
||||
if(i*i % n == i){
|
||||
lista[index]=i;
|
||||
index++;
|
||||
}
|
||||
}
|
||||
for (int i=0; i<index; i++){
|
||||
cout << lista[i] << endl;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
int main()
|
||||
{
|
||||
int n = 5;
|
||||
cout << "(";
|
||||
el_odwracalne(n);
|
||||
cout << ")";
|
||||
dzielniki_zera(n);
|
||||
|
||||
el_nilpotentne(n);
|
||||
|
||||
el_idempotentne(n);
|
||||
}
|
99
zad2.py
Normal file
99
zad2.py
Normal file
@ -0,0 +1,99 @@
|
||||
import math
|
||||
|
||||
class Polynomial:
|
||||
n = 0
|
||||
|
||||
def __init__(self, n):
|
||||
self.n = n
|
||||
|
||||
def normalize(self, w):
|
||||
while 0 in w:
|
||||
w.remove(0)
|
||||
return w
|
||||
|
||||
def multiply(self, f, g):
|
||||
result = []
|
||||
tmp=0
|
||||
for i in range(0, len(f)):
|
||||
for j in range(0, len(g)):
|
||||
tmp=f[i]*g[j]
|
||||
if i+j < len(result):
|
||||
tmp = tmp + result[i+j]
|
||||
result[i+j] = tmp % self.n
|
||||
else:
|
||||
while i+j >= len(result):
|
||||
result.append(0)
|
||||
result[i+j] = tmp % self.n
|
||||
return self.normalize(result)
|
||||
|
||||
def multiplyConst(self, f, a):
|
||||
result = []
|
||||
for i in f:
|
||||
result.append((i*a)%self.n)
|
||||
return result
|
||||
|
||||
def substract(self, f, g):
|
||||
result = []
|
||||
for i in range(0, len(f)):
|
||||
if i < len(g):
|
||||
result.append(math.fmod(f[i]-g[i], self.n))
|
||||
else:
|
||||
result.append(f[i])
|
||||
return result
|
||||
|
||||
def zero(self, a, b):
|
||||
i = 0
|
||||
while True:
|
||||
if (a + (-(b*i))) == 0:
|
||||
return i
|
||||
i = i + 1
|
||||
|
||||
|
||||
def divide(self, f, g):
|
||||
quotient = []
|
||||
reminder = f
|
||||
tmpList = []
|
||||
a = (len(f) - 1)
|
||||
b = (len(g) - 1)
|
||||
|
||||
for i in range(0, a-b+1):
|
||||
quotient.append(0)
|
||||
|
||||
q = len(quotient)-1
|
||||
tmp = 0
|
||||
|
||||
while a>=b:
|
||||
tmp = self.zero(reminder[a], g[b])
|
||||
quotient[q] = tmp
|
||||
q = q - 1
|
||||
tmpList = self.multiplyConst(g, tmp)
|
||||
while len(tmpList) <= a:
|
||||
tmpList.append(0)
|
||||
reminder = self.substract(reminder, tmpList)
|
||||
a = a - 1
|
||||
return self.normalize(reminder)
|
||||
|
||||
def nwd(self, f, g):
|
||||
if len(g)==0:
|
||||
return f
|
||||
return self.nwd(g, self.divide(f, g))
|
||||
|
||||
|
||||
|
||||
|
||||
polynomial = Polynomial(2)
|
||||
f = [1, 1, 1, 0, 1]
|
||||
g = [0, 1, 1]
|
||||
print(polynomial.multiply(f, g))
|
||||
print(polynomial.divide(f, g))
|
||||
print(polynomial.nwd(f, g))
|
||||
|
||||
polynomial1 = Polynomial(6)
|
||||
ff = [2, 1, 0, 2, 1, 3]
|
||||
gg = [1, 0, 0, 5]
|
||||
print(polynomial1.multiply(ff, gg))
|
||||
print(polynomial1.divide(ff, gg))
|
||||
print(polynomial1.nwd(ff, gg))
|
||||
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user