How to resolve the algorithm Brazilian numbers step by step in the Quackery programming language
How to resolve the algorithm Brazilian numbers step by step in the Quackery programming language
Table of Contents
Problem Statement
Brazilian numbers are so called as they were first formally presented at the 1994 math Olympiad Olimpiada Iberoamericana de Matematica in Fortaleza, Brazil. Brazilian numbers are defined as: The set of positive integer numbers where each number N has at least one natural number B where 1 < B < N-1 where the representation of N in base B has all equal digits.
All even integers 2P >= 8 are Brazilian because 2P = 2(P-1) + 2, which is 22 in base P-1 when P-1 > 2. That becomes true when P >= 4.
More common: for all all integers R and S, where R > 1 and also S-1 > R, then RS is Brazilian because RS = R(S-1) + R, which is RR in base S-1
The only problematic numbers are squares of primes, where R = S. Only 11^2 is brazilian to base 3.
All prime integers, that are brazilian, can only have the digit 1. Otherwise one could factor out the digit, therefore it cannot be a prime number. Mostly in form of 111 to base Integer(sqrt(prime number)). Must be an odd count of 1 to stay odd like primes > 2
Write a routine (function, whatever) to determine if a number is Brazilian and use the routine to show here, on this page;
Let's start with the solution:
Step by Step solution about How to resolve the algorithm Brazilian numbers step by step in the Quackery programming language
Source code in the quackery programming language
[ dup base put
/mod temp put
true swap
[ dup 0 > while
base share /mod
temp share != iff
[ dip not ]
done
again ]
drop
temp release
base release ] is allsame ( n n --> b )
[ false swap
dup 3 - times
[ dup i 2 +
allsame iff
[ dip not
conclude ]
done ]
drop ] is brazilian ( n --> b )
say "First 20 Brazilian numbers:" cr
[] 0
[ dup brazilian if
[ dup dip join ]
1+
over size 20 = until ]
drop echo
cr
cr
say "First 20 odd Brazilian numbers:" cr
[] 1
[ dup brazilian if
[ dup dip join ]
2 +
over size 20 = until ]
drop echo
cr
cr
say "First 20 prime Brazilian numbers:" cr
[] 1
[ dup isprime not iff
[ 2 + ] again
dup brazilian if
[ dup dip join ]
2 +
over size 20 = until ]
drop echo
You may also check:How to resolve the algorithm Formatted numeric output step by step in the Ada programming language
You may also check:How to resolve the algorithm Variable size/Get step by step in the BASIC256 programming language
You may also check:How to resolve the algorithm Abstract type step by step in the Component Pascal programming language
You may also check:How to resolve the algorithm Write to Windows event log step by step in the C++ programming language
You may also check:How to resolve the algorithm Egyptian division step by step in the jq programming language