Tuesday 2 February 2016

Project Euler #5 : Smallest multiple

2520 is the smallest number that can be divided by each of the numbers from 1 to 10 without any remainder.
What is the smallest positive number that is evenly divisible by all of the numbers from 1 to 20?

Solution
using System;
using System.Collections.Generic;
using System.IO;
class Solution {
    static void Main(String[] args) {
         int testCases = Convert.ToInt32(Console.ReadLine());
            int[] numbers = new int[testCases];
            for (int i = 0; i < testCases; i++)
            {
                numbers[i] = Convert.ToInt32(Console.ReadLine());
            }
            foreach (int number in numbers)
            {
                long product = 1;
                for (int i = 2; i <= number; i++)
                {
                    if(IsPrime(i))
                    {
                        int temp = i;
                        for(int j=2;j<=number;j++)
                        {
                            if(Math.Pow(Convert.ToDouble(i),Convert.ToDouble(j))>number)
                            {
                                break;
                            }
                            else
                            {
                                temp = Convert.ToInt32(Math.Pow(Convert.ToDouble(i), Convert.ToDouble(j)));
                            }
                        }
                        product = product * temp;
                    }
                }
                Console.WriteLine(product);
            }
    }
    public static bool IsPrime(int number)
        {
            if (number == 2 || number == 3)
                return true;
            else
            {
                bool flag = true;
                for (int i = 2; i <= Math.Sqrt(number); i++)
                {
                    if (number % i == 0)
                    {
                        flag = false;
                        break;
                    }
                }
                return flag;
            }
        }
}

Project Euler #4 : Largest palindrome product

A palindromic number reads the same both ways. The largest palindrome made from the product of two 2-digit numbers is 9009 = 91 × 99.
Find the largest palindrome made from the product of two 3-digit numbers

Solution

using System;
using System.Collections.Generic;
using System.IO;
class Solution {
    static void Main(String[] args) {
         int testCases = Convert.ToInt32(Console.ReadLine());
            List<int> numbers = new List<int>();
            for (int k = 0; k < testCases; k++)
            {
                numbers.Add(Convert.ToInt32(Console.ReadLine()));
            }
            foreach (int number in numbers)
            {
                Console.WriteLine(FindLargestNumber(number));
            }
    }
    public static int FindLargestNumber(int number)
        {
            for (int x = 9; x >= 0; --x)
            {
                int a = x * 100001;
                for (int y = 9; y >= 0; --y)
                {
                    int b = a + y * 10010;
                    for (int z = 9; z >= 0; --z)
                    {
                        int n = b + z * 1100;
                        if (n < number)
                        {
                            for (int i = 990; i > 99; i -= 11)
                            {
                                if (n % i == 0)
                                {
                                    int t = n / i;
                                    if (t < 1000) return n;
                                }
                            }
                        }
                    }
                }
            }
            return 0;
        }
}