6837093815

6837093815



Komendy zostaną wykonane 108*108, czyli 1016 razy. Dla przeszukania zakresu liczb do 1032 potrzebne będzie dodanie kolejnych pętli.

Problem wykonywania obliczeń na sprawdzanej liczbie wymaga bardziej złożonego rozwiązania. Wykorzystajmy metodę, używaną w bankowości do sprawdzania poprawności numerów rachunków bankowych. Postępując zgodnie z nią, modulo z danej liczby możemy obliczyć, dzieląc sprawdzaną liczbę na części. Gdy to zrobimy obliczamy modulo z pierwszej części, a wynik dopisujemy na początku następnego fragmentu liczby. Obliczamy modulo z otrzymanej liczby i ponownie wynik umieszczamy na początku kolejnej części liczby. Na przykład:

Szukamy wyniku następującego działania: 21357648 % 7 Podzielmy liczbę na części:

21 -35-76-48

Obliczmy modulo z pierwszego fragmentu liczby:

21% 7 = 0

Dopiszmy wynik na początku drugiego fragmentu i obliczmy modulo:

035 % 7 = 0 (liczymy jak 35 % 7)

Powtórzmy powyższe czynności aż do uzyskania ostatecznego wyniku:

076% 7 = 6 648 % 7 = 4

Otrzymaliśmy ostatecznie 4, więc reszta z dzielenia 21357648 przez 7 wynosi 4.

Dostosujmy tę metodę do potrzeb programu i możliwości języka. Liczbę będziemy przechowywać w postaci rozbitej na tablicy spriiczba. Obliczmy na jak małe fragmenty musimy dzielić liczbę. Największa liczba pierwsza z zakresu do 108 to 99999989. Oznacza to, że podczas sprawdzania kolejnego zakresu największa reszta z dzielenia jaką możemy uzyskać ma wartość 99999988. Aby nie wykroczyć poza zakres zmiennej, po dopisaniu tej reszty przed fragmentem liczby musimy dzielić sprawdzaną liczbę na części jednocyfrowe. Dołączmy do programu dwie funkcje. Pierwsza z nich będzie zwiększać przechowywaną na tablicy liczbę (nadajmy tej funkcji nazwę powiększ). Druga będzie odpowiedzialna za wykonywanie obliczeń (nazwiemy ją dziel).

--------------ŹRÓDŁO 6--------------

1.    void powiększ() {

2.    int wskaznik=l;//wskaźnik rządu na którym operujemy (początkowo wskazuje

//na rząd jedności)

3.    char flagaws=0;

4.    spriiczba[wskaźnik]+=2;//powiększamy rząd jedności

5.    if(spriiczba[wskaźnik]>10){//jeśli wartość rządu jedności przekroczy 10

//musimy ją zredukować do 1 i powiększyć //liczbę w kolejnym rzędzie

6.    spriiczba[wskaźnik]=1;

7.    wskaznik++;

8.    while(flagaws==0) {

9.    spriiczba[wskaźnik]=sprliczba[wskaźnik]+1;

10.    if(spriiczba[wskaźnik]=10){

11.    spriiczba[wskaźnik]=0;

12.    wskaznik++;

13.    Jelse flagaws=l;

14.    }//koniec while

6



Wyszukiwarka

Podobne podstrony:
kontemplacji (czyli zdolności niezbędnych dla dokonywania rzeczy wielkich do których z pewnością nal
Image154 Na rysunku 4.108 przedstawiono diagram stanów dla rejestru liniowego o n = 5 i sprzężeniu F
skanuj0027 (108) 144 Pediatria. Podręcznik dla studentów pielęgniarsam stężenie amylazy. Należy pami
badający poziom wykonania lub zdolności do wykonania pewnego zadania, czyli wówczas gdy mamy do czyn
Magazyn3601 r - 14 — Komendy: Piech. Wykonanie. Oddział staj! 20 Żołnierze trzymają karabiny
Dziawgo; Granice ciągów liczbowych 1 108 Przepływy międzygałęziowe Tabela dla nowych przepływów międ
IMGT Chromosomy Liczba chromosomów jest stała i charakterystyczna dla danego gatunku, od 6 do 108, z
pic 11 03 122141 220 Nauczyciel zgadza się i obiecuje pani Dyrektor, że zadanie zaraz zostanie wyko
S5008483 108 nej fasy (PavolĆe). Podkreślić trzeba trwanie aż do póśnegn okresu lateńskiego (np. Ple
060 4 nie zdefiniowano K, zostanie wykonane jednokrotne przejście po lorze okręgu o promieniu l Narz

więcej podobnych podstron