using System.Collections.Generic;
public static void Main()
printFristNPrimeBrazilianNumbers(200);
private static bool isPrime(long number)
for(int i=2;i<Math.Ceiling(Math.Sqrt(number));++i) if (number%i==0) return false;
private static string convert(long number, int baseNumber)
StringBuilder convertedValue = new StringBuilder();
long currentNumber = number;
if (baseNumber > number - 1) return convertedValue.ToString();
while (currentNumber != 0)
int baseVal = Convert.ToInt32(Math.Pow(baseNumber, power));
long rest = currentNumber % baseVal;
long toPrint = rest / Convert.ToInt32(Math.Pow(baseNumber, power - 1));
convertedValue.Insert(0, Convert.ToString(toPrint));
if (toPrint > 9) convertedValue.Insert(0, ' ');
return convertedValue.ToString();
private static bool checkIfAllTheSame(string str)
string localStr = str.Replace(" ", string.Empty);
for (int index = 1; index < localStr.Length; index++)
if (localStr[index-1] != localStr[index]) equals = false;
private static void printFirstNBrazilianNumbers(int quantity)
SortedSet<long> currents = new SortedSet<long>();
Console.WriteLine("First " + quantity + " Brazilian numbers:");
while (counter < quantity + 1)
for(int baseNumber = 2; baseNumber < currentNumber - 1; baseNumber++)
if (currents.Contains(currentNumber)) continue;
string numberString = convert(currentNumber, baseNumber);
if (checkIfAllTheSame(numberString))
Console.WriteLine(counter + ". " + currentNumber + " in base " + baseNumber + " is " + numberString);
currents.Add(currentNumber);
private static void printFirstNOddBrazilianNumbers(int quantity)
SortedSet<long> currents = new SortedSet<long>();
Console.WriteLine("First " + quantity + " odd Brazilian numbers:");
while (counter < quantity + 1)
if (++currentNumber % 2 == 0) continue;
for(int baseNumber = 2; baseNumber < currentNumber - 1; baseNumber++)
if (currents.Contains(currentNumber)) continue;
string numberString = convert(currentNumber, baseNumber);
if (checkIfAllTheSame(numberString))
Console.WriteLine(counter + ". " + currentNumber + " in base " + baseNumber + " is " + numberString);
currents.Add(currentNumber);
private static void printFristNPrimeBrazilianNumbers(int quantity)
SortedSet<long> currents = new SortedSet<long>();
Console.WriteLine("First " + quantity + " prime Brazilian numbers:");
while (counter < quantity + 1)
if (!isPrime(++currentNumber)) continue;
for(int baseNumber = 2; baseNumber < currentNumber - 1; baseNumber++)
if (currents.Contains(currentNumber)) continue;
string numberString = convert(currentNumber, baseNumber);
if (checkIfAllTheSame(numberString))
Console.WriteLine(counter + ". " + currentNumber + " in base " + baseNumber + " is " + numberString);
currents.Add(currentNumber);