![](https://static.wixstatic.com/media/d683fc_73505168a8754087811a83d8d6d1f09e~mv2.jpg/v1/fill/w_288,h_141,al_c,q_80,usm_0.66_1.00_0.01,blur_2,enc_auto/d683fc_73505168a8754087811a83d8d6d1f09e~mv2.jpg)
Power Of A Number Algorithm
C# / Unity
using System.Globalization;
using UnityEngine;
using TMPro;
public class PowerNumChecker : MonoBehaviour
{
public TextMeshProUGUI outputText;
public TMP_InputField powerNumInputField;
private TMP_InputField valueInputField;
private int powerInput, valueInput;
private void Start()
{
valueInputField = GetComponent<TMP_InputField>();
}
private void Update()
{
if (Input.GetKeyDown(KeyCode.Return))
{
//Check if numbers were inputted or not
if (int.TryParse(valueInputField.text, NumberStyles.Number, CultureInfo.CurrentCulture.NumberFormat, out valueInput) &&
int.TryParse(powerNumInputField.text, NumberStyles.Number, CultureInfo.CurrentCulture.NumberFormat, out powerInput))
{
//Check if number is too small for powers
if(powerInput > 1 || powerInput < -1)
{
//Check if a power
if (CheckInput(valueInput, powerInput))
{
outputText.text = "'" + valueInput.ToString("#,##0") + "' IS a power of '" + powerInput.ToString("#,##0") + "'";
}
else
{
outputText.text = "'" + valueInput.ToString("#,##0") + "' Is NOT a power of '" + powerInput.ToString("#,##0") + "'";
}
}
//Tell user input is too small
else
{
outputText.text = "'" + powerInput.ToString() + "' is too small for it to have any powers.";
}
}
//Tell user input was invalid
else
{
outputText.text = "No int (Numbers) were entered, \none was too big, or only one number was entered.";
}
//Reset input fields
valueInputField.text = "";
powerNumInputField.text = "";
}
}
public bool CheckInput(int valueNumber, int powerNumber)
{
//If they're the same, avoid computing
if(valueNumber == powerNumber)
{
return true;
}
//Actually iterate through
else
{
for (int i = powerNumber; i < valueNumber;)
{
//Multiply i to power number to get to value
i *= powerNumber;
//End the loop with true if they're equal to each other
if (i == valueNumber)
{
return true;
}
//Loop is bigger than the value, so return false
else if (i > valueNumber)
{
return false;
}
}
}
return false;
}
}