Advertisement
sashomaga

Divisors

Dec 26th, 2012
70
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 2.11 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3.  
  4. //Вход
  5. //От първият ред на стандартния вход се въвеждат две цели числа m и n.
  6. //Изход
  7. //На един ред на стандартния изход програмата трябва да изведе отделени с
  8. //интервали всички общи прости делители на m  и n.  Делителите се извеждат във
  9. //възходящ ред и всеки делител се извежда само веднъж. Ако двете числа нямат общи
  10. //прости делители, да се изведе -1.
  11.  
  12. class Program
  13. {
  14.     static void Main()
  15.     {
  16.  
  17.         string[] input = Console.ReadLine().Split();
  18.         int[] num = new int[input.Length];
  19.         List<int> result = new List<int>();
  20.  
  21.         for (int i = 0; i < input.Length; i++)
  22.         {
  23.             num[i] = int.Parse(input[i]);
  24.         }
  25.  
  26.         if (num[0] > num[1]) //set num[1] always bigger
  27.         {
  28.             num[0] ^= num[1];
  29.             num[1] ^= num[0];
  30.             num[0] ^= num[1];
  31.         }
  32.  
  33.         bool prime = false;
  34.         for (int i = 2; i <= (int)Math.Sqrt(num[1]); i++)
  35.         {
  36.             if ((num[0] % i == 0) && (num[1] % i == 0))
  37.             {
  38.                 prime = IsPrime(i);
  39.                 if (prime == true)
  40.                 {
  41.                     result.Add(i);
  42.                 }
  43.             }
  44.             prime = false;
  45.         }
  46.         //print result
  47.         if (result.Count != 0)
  48.         {
  49.             foreach (var item in result)
  50.             {
  51.                 Console.Write(item + " ");
  52.             }
  53.         }
  54.         else
  55.         {
  56.             Console.WriteLine(-1);
  57.         }
  58.  
  59.     }
  60.  
  61.     private static bool IsPrime(int num)
  62.     {
  63.         if (num == 1) //case of 1
  64.         {
  65.             return false;
  66.         }
  67.         for (int i = 2; i <= (int)Math.Sqrt(num); i++)
  68.         {
  69.             if (num % i == 0)
  70.             {
  71.                 return false;
  72.             }
  73.         }
  74.         return true;
  75.     }
  76. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement