Data update
This commit is contained in:
parent
4bb20c9b71
commit
cbaf4c4b64
12390 changed files with 318560 additions and 27248 deletions
68
Task/Curzon-numbers/JavaScript/curzon-numbers.js
Normal file
68
Task/Curzon-numbers/JavaScript/curzon-numbers.js
Normal file
|
|
@ -0,0 +1,68 @@
|
|||
/**
|
||||
* Curzon Numbers
|
||||
*
|
||||
* A generalized Curzon number is a positive integer n such that:
|
||||
* k^n + 1 is divisible by (k * n + 1)
|
||||
* For k = 2, this gives the classic definition of Curzon numbers
|
||||
*/
|
||||
|
||||
function isGeneralisedCurzonNumber(aK, aN) {
|
||||
const r = aK * aN;
|
||||
return modulusPower(aK, aN, r + 1) === r;
|
||||
}
|
||||
|
||||
function modulusPower(aBase, aExponent, aModulus) {
|
||||
if (aModulus === 1) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
aBase %= aModulus;
|
||||
let result = 1;
|
||||
while (aExponent > 0) {
|
||||
if ((aExponent & 1) === 1) {
|
||||
result = (result * aBase) % aModulus;
|
||||
}
|
||||
aBase = (aBase * aBase) % aModulus;
|
||||
aExponent >>= 1;
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
function main() {
|
||||
for (let k = 2; k <= 10; k += 2) {
|
||||
console.log(`Generalised Curzon numbers with base ${k}:`);
|
||||
|
||||
let n = 1;
|
||||
let count = 0;
|
||||
const results = [];
|
||||
|
||||
// Find the first 50 Curzon numbers
|
||||
while (count < 50) {
|
||||
if (isGeneralisedCurzonNumber(k, n)) {
|
||||
results.push(n);
|
||||
count++;
|
||||
}
|
||||
n++;
|
||||
}
|
||||
|
||||
// Print in rows of 10
|
||||
for (let i = 0; i < results.length; i++) {
|
||||
const lineEnd = (i + 1) % 10 === 0 ? '\n' : ' ';
|
||||
process.stdout.write(`${results[i].toString().padStart(4)}${lineEnd}`);
|
||||
}
|
||||
|
||||
// Reset and find the 1000th Curzon number
|
||||
count = 0;
|
||||
while (count < 1000) {
|
||||
if (isGeneralisedCurzonNumber(k, n)) {
|
||||
count++;
|
||||
}
|
||||
n++;
|
||||
}
|
||||
|
||||
console.log(`1,000th Generalised Curzon number with base ${k}: ${n - 1}`);
|
||||
console.log();
|
||||
}
|
||||
}
|
||||
|
||||
main();
|
||||
Loading…
Add table
Add a link
Reference in a new issue