Sephinroth

prac 5 ex 2 ver 2.0

Oct 28th, 2019
159
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 3.15 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5.  
  6. namespace prac_5_ex_2
  7. {
  8.     class Program
  9.     {
  10.         static int SumOfDividers(int a)
  11.         {
  12.             int s = 0;
  13.             for (int i = 1; i <= Math.Sqrt(a); ++i)
  14.                 if (a % i == 0)
  15.                 {
  16.                     if (i * i == a) s += i;
  17.                     else s += i + a/i;
  18.                 }
  19.             return s;
  20.         }
  21.         static bool IsPrime(int a)
  22.         {
  23.             int q = 0;
  24.             for (int i = 1; i <= Math.Sqrt(a); ++i)
  25.             {
  26.                 if (a % i == 0)
  27.                     if (i * i == a) q++;
  28.                     else q += 2;
  29.             }
  30.             if (q == 1) return true;
  31.             else return false;
  32.         }
  33.         static void Main(string[] args)
  34.         {
  35.             //example
  36.             /* Console.Write("Введите n: ");
  37.              int n = int.Parse(Console.ReadLine());*/
  38.  
  39.             //a)
  40.             Console.Write("a)\n\ta = ");
  41.             int aa = int.Parse(Console.ReadLine());
  42.             Console.Write("\tb = ");
  43.             int ba = int.Parse(Console.ReadLine());
  44.             for (int i = aa; i <= ba; i++)
  45.                 Console.WriteLine("\n\t{0} — {1}", i, SumOfDividers(i));
  46.  
  47.             //b)
  48.             Console.Write("\nb)\n\ta = ");
  49.             int ab = int.Parse(Console.ReadLine());
  50.             Console.Write("\tb = ");
  51.             int bb = int.Parse(Console.ReadLine());
  52.             Console.Write("\tn = ");
  53.             int n = int.Parse(Console.ReadLine());
  54.             bool flag = false;
  55.             for (int i = ab; i <= bb; i++)
  56.                 if (SumOfDividers(i) == n)
  57.                 {
  58.                     Console.WriteLine("\n\t{0}", i);
  59.                     flag = true;
  60.                 }
  61.             if (!flag) Console.WriteLine("\n\tИскомых чисел в данном промежутке нет");
  62.  
  63.             //c)
  64.             Console.Write("c)\n\ta = ");
  65.             int ac = int.Parse(Console.ReadLine());
  66.             Console.Write("\tb = ");
  67.             int bc = int.Parse(Console.ReadLine());
  68.             int max = SumOfDividers(bc), num = bc;
  69.             for (int i = bc; i >= ac; i--)
  70.             {
  71.                 if (!IsPrime(i))
  72.                     if (SumOfDividers(i) > max)
  73.                     {
  74.                         max = SumOfDividers(i);
  75.                         num = i;
  76.                     }
  77.                
  78.             }
  79.             Console.WriteLine("\t{0}, сумма делителей —  {1}", num, max);
  80.  
  81.             //d)
  82.             flag = false;
  83.             Console.Write("d)\n\tA = ");
  84.             int ad = int.Parse(Console.ReadLine());
  85.             for (int i = ad-1; i > 0; i--)
  86.                 if (SumOfDividers(i) == SumOfDividers(ad))
  87.                 {
  88.                     Console.WriteLine("\tИскомое число — {0}", i);
  89.                     flag = true;
  90.                     break;
  91.                 }
  92.             if (!flag) Console.WriteLine("\tЧисла с такой суммой делителей нет");
  93.             Console.ReadKey();
  94.         }
  95.     }
  96. }
Add Comment
Please, Sign In to add comment