Witamy na forum PC Format Zapraszamy do REJESTRACJI


Użytkownicy przeglądający ten wątek: 1 gości

Program liczący liczby pierwsze Mersenne'a

#1
Program liczący liczby pierwsze Mersenne'a
Otoż problem wyglada tak ze program działa ale zapętla sie jeszcze przed wyświetleniem mi wyniku (od razu mowie ze nie mam pomyslu innego jak napisac to tak zeby sprawdzalo czy jest to liczba pierwsza czy nie) kod programu wyglada nastepujaco
Kod:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApp2
{
   class Program
   {
       static void Main(string[] args)
       {
           double b, c, e;
           b = 2;
           c = 0;
           e = 1;
           for (int i = 0; i <= 49; i++)
           {
           zxc:
               e++;
               b = b * b;
               c = b - 1;
               if( c % 2 == 0 )
               {
                   if( c % 3 == 0 )
                   {
                       if( c % 5 == 0 )
                       {
                           if( c % 7 == 0)
                           {
                               Console.WriteLine("nr." + i + " = 2^" + e);
                           }
                           else
                           {
                               goto zxc;
                           }
                       }
                       else
                       {
                           goto zxc;
                       }
                   }
                   else
                   {
                       goto zxc;
                   }

               }
               else
               {
                   goto zxc;
               }
           }
           Console.ReadKey(true);
       }
   }
}
Bardzo prosił bym o pomoc w rozwiazaniu tego problemu

wpadlem na pomysl aby zrobic to w jako 2^x-1 a x dac jako zmienna x++, nastepnie sprawdzac czy wynik rownania jest liczba pierwsza oraz zlota liczba jesli jest to powrot do poczatku i zwiekszamy x o 1 i tak w kolko tylko nie mam pomyslu jak to napisac

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Wpadłem na pomysl aby zrobic petle gdzie mamy rownanie 2^x-1 gdzie x bedzie x++ przy kazdym powtorzeniu petli i wynik dzialania bedzie sprawdzany czy jest liczba pierwsza poprzez brute force a nastepnie sprawdzany czy jest liczba doskonala i jesli obydwa warunki beda spelnione to bedzie wypisywana na ekranie, problem w tym ze nie mam pomyslu jak to napisac
 System operacyjny: windows_seven Przeglądarka: chrome
#2
RE: Program liczący liczby pierwsze Mersenne'a
Nic się nie zapętla. Wszystko działa dokładnie według ustalonych warunków. Po prostu w każdej kolejnej iteracji któryś z warunków nie jest spełniony, więc program przeskakuje od razu do ostatniej instrukcji. Wiesz, jak w Visual Studio debuguje się program z podglądem zmiennych w trakcie wykonywania? Prześledź sobie zmienne w trakcie debugowania.
Pozdrawiam.
Ajgor
 System operacyjny: windows_ten Przeglądarka: chrome
#3
RE: Program liczący liczby pierwsze Mersenne'a
Podpowiedź: podane warunki spełni jedynie liczba 2*3*5*7 = 210. Poza tym użycie instrukcji goto jest złym pomysłem (program obejdzie się bez niej). Może zacznij najpierw od napisania funkcji, która zwróci informację, czy liczba jest pierwsza (na początek wystarczy pętla, która sprawdzi podzielność przez liczby nie większe niż n/2, gdzie n to badana liczba - później możesz nieco usprawnić).
Z ciekawości - dlaczego akurat C#?
 System operacyjny: linux_ubuntu Przeglądarka: firefox
Programy: Polecane / Nowe / Inne




Podobne wątki (Program liczący liczby pierwsze Mersenne'a)
Wątek: Autor Odpowiedzi: Wyświetleń: Ostatni post
  [VBA Excel] Zaokrąglanie liczby w górę Pioro 2 16045 13.02.2018, 21:25
Ostatni post: Pioro
  Konwertowanie słów na liczby Java Blendow 5 12008 19.08.2017, 21:17
Ostatni post: Szachista
  Wyszukuje wszystkie dzielniki danej liczby n które są liczbami pierwszymi soul1648 2 9405 21.03.2017, 20:55
Ostatni post: soul1648

Skocz do: