TizzyT

Deletable Primes Calculator - TizzyT

Oct 2nd, 2014
288
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 2.27 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. namespace DeletablePrimesCSharp
  4. {
  5.     class DelPrimes
  6.     {
  7.         static void Main(string[] args)
  8.         {
  9.             List<int> Primes = Sieve(10000000);
  10.             bool[] Table = new bool[Primes[Primes.Count - 1] + 1];
  11.             double sum = 17;
  12.             foreach (int prime in Primes)
  13.             {
  14.                 Table[prime] = true;
  15.             }
  16.             for (int i = 4; i <= Primes.Count - 1; i++)
  17.             {
  18.                 if (i > Primes.Count - 1)
  19.                     break;
  20.                 string intString = Convert.ToString(Primes[i]);
  21.                 Table[0] = false;
  22.                 for (int x = 0; x <= intString.Length - 1; x++)
  23.                 {
  24.                     string crnt = intString.Remove(x, 1);
  25.                     if (!(crnt.StartsWith("0")))
  26.                     {
  27.                         if (Table[int.Parse(crnt)] == true)
  28.                         {
  29.                             Table[0] = true;
  30.                             break;
  31.                         }
  32.                     }
  33.                 }
  34.                 if (Table[0] == false)
  35.                 {
  36.                     Table[Primes[i]] = false;
  37.                     Primes.RemoveAt(i);
  38.                     i--;
  39.                 }
  40.                 else
  41.                 {
  42.                     sum += Primes[i];
  43.                 }
  44.             }
  45.             Console.WriteLine(Primes.Count + System.Environment.NewLine + sum);
  46.             Console.ReadKey();
  47.         }
  48.         static List<int> Sieve(int limit)
  49.         {
  50.             List<int> Primes = new List<int> { 2, 3, 5, 7 };
  51.             int sqrt = 0;
  52.             int crntNbr = 11;
  53.             while (crntNbr < limit)
  54.             {
  55.                 sqrt = (int)Math.Sqrt(crntNbr);
  56.                 foreach (int prime in Primes)
  57.                 {
  58.                     if (prime <= sqrt)
  59.                     {
  60.                         if (crntNbr % prime == 0)
  61.                             break;
  62.                     }
  63.                     else
  64.                     {
  65.                         Primes.Add(crntNbr);
  66.                         break;
  67.                     }
  68.                 }
  69.                 crntNbr += 2;
  70.             }
  71.             return Primes;
  72.         }
  73.     }
  74. }
Advertisement
Add Comment
Please, Sign In to add comment