Skip to content

Instantly share code, notes, and snippets.

@ertugrulozcan
Created February 15, 2020 09:58
Show Gist options
  • Save ertugrulozcan/1e0f07408a8585b7edab2e3e1d948571 to your computer and use it in GitHub Desktop.
Save ertugrulozcan/1e0f07408a8585b7edab2e3e1d948571 to your computer and use it in GitHub Desktop.
PerfectNumbers
using NUnit.Framework;
namespace Tests
{
public class PerfectionTest
{
[SetUp]
public void Setup()
{
}
[Test]
public void PerfectNumberTest()
{
Assert.IsTrue(ObssConsoleApp.PerfectNumber.IsPerfectNumber(6));
Assert.IsTrue(ObssConsoleApp.PerfectNumber.IsPerfectNumber(28));
Assert.IsTrue(ObssConsoleApp.PerfectNumber.IsPerfectNumber(496));
Assert.IsFalse(ObssConsoleApp.PerfectNumber.IsPerfectNumber(10));
}
}
}
using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.CompilerServices;
namespace ObssConsoleApp
{
public static class PerfectNumber
{
#region Methods
public static bool IsPerfectNumber(int number)
{
var multipliers = FindMultipliers(number);
if (multipliers == null || !multipliers.Any())
{
return false;
}
return multipliers.Sum() == number;
}
public static IEnumerable<int> FindMultipliers(int number)
{
if (PrimeNumbers.IsPrime(number))
{
return new[] { number };
}
List<int> result = new List<int>();
for (int i = 2; i < number / 2; i++)
{
if (number % i == 0)
{
result.Add(i);
}
}
if (result.Any() && !result.Contains(1))
{
result.Add(1);
}
return result;
}
#endregion
}
}
using System;
namespace ObssConsoleApp
{
public static class PrimeNumbers
{
public static bool IsPrime(int number)
{
if (number < 0)
{
throw new Exception("Number can not be negative!");
}
if (number == 0 || number == 1)
{
return false;
}
if (number == 2)
{
return true;
}
for (int i = 2; i < number; i++)
{
if (number % i == 0)
{
return false;
}
}
return true;
}
}
}
using NUnit.Framework;
namespace Tests
{
public class Tests
{
[SetUp]
public void Setup()
{
}
[Test]
public void PrimeNumberTest()
{
Assert.IsTrue(ObssConsoleApp.PrimeNumbers.IsPrime(2));
Assert.IsTrue(ObssConsoleApp.PrimeNumbers.IsPrime(3));
Assert.IsTrue(ObssConsoleApp.PrimeNumbers.IsPrime(5));
Assert.IsTrue(ObssConsoleApp.PrimeNumbers.IsPrime(7));
Assert.IsTrue(ObssConsoleApp.PrimeNumbers.IsPrime(11));
Assert.IsTrue(ObssConsoleApp.PrimeNumbers.IsPrime(13));
Assert.IsFalse(ObssConsoleApp.PrimeNumbers.IsPrime(4));
Assert.IsFalse(ObssConsoleApp.PrimeNumbers.IsPrime(10));
Assert.IsFalse(ObssConsoleApp.PrimeNumbers.IsPrime(15));
Assert.IsFalse(ObssConsoleApp.PrimeNumbers.IsPrime(25));
Assert.IsFalse(ObssConsoleApp.PrimeNumbers.IsPrime(27));
Assert.IsFalse(ObssConsoleApp.PrimeNumbers.IsPrime(30));
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment