Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Reflection.Metadata.Ecma335;
- namespace PalindromicNumberTask
- {
- /// <summary>
- /// Provides static method for working with integers.
- /// </summary>
- public static class NumbersExtension
- {
- /// <summary>
- /// Determines if a number is a palindromic number, see https://en.wikipedia.org/wiki/Palindromic_number.
- /// </summary>
- /// <param name="number">Verified number.</param>
- /// <returns>true if the verified number is palindromic number; otherwise, false.</returns>
- /// <exception cref="ArgumentException"> Thrown when source number is less than zero. </exception>
- public static bool IsPalindromicNumber(int number)
- {
- if (number < 0)
- {
- throw new ArgumentException("number is less than 0", nameof(number));
- }
- int length = IntLength(number);
- return IsPalindromicNumber(number, (int)Math.Pow(10, length - 1));
- }
- private static int IntLength(int number)
- {
- int length = 0;
- do
- {
- length++;
- number /= 10;
- }
- while (number != 0);
- return length;
- }
- private static bool IsPalindromicNumber(int number, int pow)
- {
- if (number < 10)
- {
- return true;
- }
- if (number / pow != number % 10)
- {
- return false;
- }
- return IsPalindromicNumber((number % pow) / 10, pow / 100);
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement