Multiplicative Group
Returns multiplicative grop (Z/mZ)*
by evgkch
HTML
<div id="root">
<div id="eiler"></div>
</div>
SCSS
body {
background-color: whitesmoke;
font-family: Verdana;
}
#root {
цшверЖ 1
}
#eiler {
font-size: 14pt;
word-wrap: break-word;
}
}
JavaScript
const el = document.getElementById('eiler');
const evalReminder = (a, b) => a < b ? a : a % b;
const checkByCoprime = (a, b) => {
for (let i = 2; i < b; i++)
if (evalReminder(a * i, b) === 0)
return false;
return true;
};
const evalEulerFunc = t => {
let result = [];
for (let a = 1; a < t; a++)
if (checkByCoprime(a, t))
result.push(a);
return result;
};
const renderEulerFunc = (m) => {
const buffer = [];
const result = evalEulerFunc(m);
result.forEach((a, i) => {
if (!buffer[i]) buffer[i] = [];
result.forEach((b, j) => {
const product = a * b;
buffer[i].push(evalReminder(product, m));
});
});
console.log(buffer)
const innerHTML = `(Z/${m}Z)* = {${result}}`;
el.innerHTML = innerHTML;
};
function getCayleyTable(m) {
const group = evalEulerFunc(m);
const groupLength = group.length;
const cayleyTable = [];
for (let i = 0; i < groupLength; i++)
{
if (!cayleyTable[i]) cayleyTable[i] = [];
for (let j = 0; j < groupLength; j++)
cayleyTable[i].push(evalReminder(group[i] * group[j], m));
};
return cayleyTable;
}
function createTable(tableData) {
const table = document.createElement('table');
const tableBody = document.createElement('tbody');
tableData.forEach(rowData => {
const row = document.createElement('tr');
rowData.forEach(cellData => {
const cell = document.createElement('td');
cell.appendChild(document.createTextNode(cellData));
row.appendChild(cell);
});
tableBody.appendChild(row);
});
table.appendChild(tableBody);
el.appendChild(table);
}
createTable(getCayleyTable(12))