Prosty? wzór na potrzeby programu
Prosty? wzór na potrzeby programu
Dzień dobry,
jestem programistą hobbystą i zazwyczaj jeśli mam do czynienia z matematyką, to są to raczej proste przekształcenia. Tutaj jednak myślę nad tym wzorem i mam zaćmienie, chyba za długo siedzę przed komputerem.
Otóż jest jakaś liczba znana, większa od 2000. Jak z tej liczny mogę uzyskać liczbę mniejszą bądź równą 2000 odejmując od niej wielokrotności (ile?) 2000? Proszę o jakiś elegancki wzór, który sam "domyśli się" ile tych wielokrotności odjąć żeby uzyskać wynik <= 2000.
Przykładowo.
Liczba 5130 to:
5130 - 2000 - 2000 = 1130
Liczba 8429 to:
8429 - 2000 - 2000 - 2000 - 2000 = 429.
Jakieś pomysły? Pozdrawiam
jestem programistą hobbystą i zazwyczaj jeśli mam do czynienia z matematyką, to są to raczej proste przekształcenia. Tutaj jednak myślę nad tym wzorem i mam zaćmienie, chyba za długo siedzę przed komputerem.
Otóż jest jakaś liczba znana, większa od 2000. Jak z tej liczny mogę uzyskać liczbę mniejszą bądź równą 2000 odejmując od niej wielokrotności (ile?) 2000? Proszę o jakiś elegancki wzór, który sam "domyśli się" ile tych wielokrotności odjąć żeby uzyskać wynik <= 2000.
Przykładowo.
Liczba 5130 to:
5130 - 2000 - 2000 = 1130
Liczba 8429 to:
8429 - 2000 - 2000 - 2000 - 2000 = 429.
Jakieś pomysły? Pozdrawiam
-
- Użytkownik
- Posty: 421
- Rejestracja: 19 lut 2019, o 19:30
- Płeć: Mężczyzna
- Lokalizacja: Polska
- Podziękował: 163 razy
- Pomógł: 16 razy
Re: Prosty? wzór na potrzeby programu
Może jest na to gotowa funkcja, ale jeśli nie będziesz mógł znaleźć, to możesz skorzystać z twierdzenia o dzieleniu z resztą.
Od danej liczby odejmujesz resztę z dzielenia tej liczby przez \(\displaystyle{ 2000}\) i dzielisz przez \(\displaystyle{ 2000}\)
Podam na przykładzie, który podałeś:
\(\displaystyle{ \left[ 5130 - 5130 \;(mod \; 2000)\right] : 2000 = \left[ 5130-1130\right]:2000 = 2}\)
Z tego co wiem, to funkcja modulo jest podstawową funkcją w programowaniu, ale być może jest już gotowa funkcja, która to obsługuje. Jeżeli chodzi o programowanie, to niestety kompletnie się nie znam.
Edit: Ale część całkowita liczby, czyli "podłoga" (floor) też jest dość popularna, a to jest właśnie to, czyli
\(\displaystyle{ \lfloor {5130:2000}\rfloor = 2}\)
Od danej liczby odejmujesz resztę z dzielenia tej liczby przez \(\displaystyle{ 2000}\) i dzielisz przez \(\displaystyle{ 2000}\)
Podam na przykładzie, który podałeś:
\(\displaystyle{ \left[ 5130 - 5130 \;(mod \; 2000)\right] : 2000 = \left[ 5130-1130\right]:2000 = 2}\)
Z tego co wiem, to funkcja modulo jest podstawową funkcją w programowaniu, ale być może jest już gotowa funkcja, która to obsługuje. Jeżeli chodzi o programowanie, to niestety kompletnie się nie znam.
Edit: Ale część całkowita liczby, czyli "podłoga" (floor) też jest dość popularna, a to jest właśnie to, czyli
\(\displaystyle{ \lfloor {5130:2000}\rfloor = 2}\)
-
- Użytkownik
- Posty: 926
- Rejestracja: 24 paź 2011, o 01:24
- Płeć: Mężczyzna
- Lokalizacja: Polska
- Podziękował: 75 razy
- Pomógł: 274 razy
Re: Prosty? wzór na potrzeby programu
Kod: Zaznacz cały
int a, b, c, d;
a = 5110; // liczba całkowita
b = 2000; // dzielnik, liczba całkowita
c = 0;
d = a;
while (d>=b)
{
c = c + 1;
d = d - b;
}
-
- Użytkownik
- Posty: 128
- Rejestracja: 5 lip 2015, o 14:48
- Płeć: Mężczyzna
- Lokalizacja: nie wiem
- Podziękował: 11 razy
- Pomógł: 24 razy
Re: Prosty? wzór na potrzeby programu
Mam zastrzeżenia do kodu powyżej, po pierwsze po co inkrementujesz zmienną c w każdej iteracji, po drugie ta pętla nie jest potrzebna. Całość sprowadza się do tego co powiedział a4karo, czyli:Elayne pisze: ↑3 sie 2021, o 01:02Kod: Zaznacz cały
int a, b, c, d; a = 5110; // liczba całkowita b = 2000; // dzielnik, liczba całkowita c = 0; d = a; while (d>=b) { c = c + 1; d = d - b; }
Kod: Zaznacz cały
int number = 5030 //zadana liczba
int result = number / 2000;
-
- Użytkownik
- Posty: 926
- Rejestracja: 24 paź 2011, o 01:24
- Płeć: Mężczyzna
- Lokalizacja: Polska
- Podziękował: 75 razy
- Pomógł: 274 razy
Re: Prosty? wzór na potrzeby programu
Miałbym więcej zastrzeżeń do kodu powyżej, ale nie o to tu chodzi. Jeśli odczytamy zmienną c to otrzymamy ile razy dzielnik występuje w danej liczbie.
-
- Użytkownik
- Posty: 128
- Rejestracja: 5 lip 2015, o 14:48
- Płeć: Mężczyzna
- Lokalizacja: nie wiem
- Podziękował: 11 razy
- Pomógł: 24 razy
Re: Prosty? wzór na potrzeby programu
Rzeczywiście, całkiem o tym zapomniałem(co do zmiennej c), a co do zastrzeżeń, to chętnie posłucham, nie z jakieś perwersji, ale z czystej ciekawości, co masz tam do zarzucenia?
Edit: Chyba, że nie zrozumiałem wyrażenia "do powyższego kodu" i masz na myśli Twój kod. Jeśli jednak mój, to jestem ciekaw co w nim jest nie tak.
Edit: Chyba, że nie zrozumiałem wyrażenia "do powyższego kodu" i masz na myśli Twój kod. Jeśli jednak mój, to jestem ciekaw co w nim jest nie tak.