Witam. Jestem początkującym programistą (czytaj pierwszy semestr studiów informatycznych) i mam pytanie do bardziej biegłych w tym temacie osób.
Jako że jestem początkujący (praktycznie zerowa znajomość delphi), potrzebuje pewnych wskazówek/pomocy przy napisaniu pewnego programu.
Treść zadania:
"Napisz program znajdujący wszystkie liczby pierwsze, które można stworzyć z podzbiorów
cyfr podanej liczby całkowitej.
Przykład: pytamy ile liczb pierwszych można stworzyć z cyfr liczby 1379? Możemy znaleć aż
31 liczb pierwszych zanurzonych w liczbie 1379. Uwaga: budujšc liczbę pierwszš możemy każdą
cyfrę ze zbioru wejciowego wzišć tylko raz."
Jako że jestem jak na razie ignorantem w kwestii programowania w Delphi (7), więc jedyne co udało mi się do tej pory stworzyć w kwestii tego programu to coś takiego:
"
program liczby_pierwsze_zanurzone;
{$APPTYPE CONSOLE}
uses
Math,SysUtils;
var a,b,d,e,f,h,X,C,G : Integer;
begin
d:=10;
writeln('Podaj liczbe');
readln(a);
C:=1;
G:=10;
while(a>=G) do
begin
C:=C+1;
G:=G*10;
end;
begin
repeat
C:=C-1;
writeln((a / (Power(d, C))));
readln;
until C=0;
end;
end.
"
Mój pomysł polega na tym, że - pierwsza pętla 'while' określa mi ile cyfr ma dana liczba, a pętla 'repeat ... until' dzieli mi dają liczbę przez kolejne(malejące) potęgi liczby 10. W ten sposób chciałem odseparować cyfry danej liczby, a następnie w bliżej nie znany mi sposób stworzyć maksymalną liczbę losowych połączeń(zbiorów) cyfr danej wcześniej liczby, bez powtórzeń, a ostatecznie sprawdzić czy owe 'zbiory' są liczbami pierwszymi.
Co do sprawdzenia czy dane liczby są pierwsze znalazłem już taki programik:
"
program Czy_Pier;
uses CRT;
var L:LongInt;
i:LongInt;
Jest:Boolean;
begin
ClrScr;
Jest:=True;
Write('Podaj liczbe do sprawdzenia: ');
ReadLn(L);
for i:=2 to trunc(sqrt(L)) do If (L mod i)=0 then
begin
Jest:=false;
break;
end;
if jest then Write(l,' jest liczba pierwszĄ!;-)')
else Write(l,' nie jest liczbĄ pierwszĄ, bo dzieli sie przez: ',i);
ReadLn;
end.
"
No... to teraz czas na wypisanie problemów na jakie napotkałem pisząc mój pierwszy program w delphi:
1)Jak uzyskać wynik całkowity (mam na myśli wynik pętli 'repeat ... until', ponieważ do tej pory wyświetla mi coś takiego 5.00000000000000E+0000)
2)Dlaczego znaku dzielenie '/' nie mogę zastąpić 'div' (ułatwiło by mi to sprawę... chyba) - wyskakuje błąd (mało istotne pytanie)
3)Jak potem wykorzystać otrzymane cyfry (tzn. jak je 'wziąć' i użyć do kolejnych działań)
4)Jak stworzyć losowe zbiory (pary/trójki/n-tki) cyfr uzyskanych w wyniku pętli 'repeat ... until' tak, żeby z liczby 123 stworzyło mi: 1,2,3,12,13,21,31 itp.