Kako množiti brojeve i deliti brojeve bez tablice

1644017435353.png
 
hehe jednostavno je, recimo princip obrnute piramide, gde ti je gornji deo svaki broj kvadriran i napisan u tom obliku i onda ides od desno na levo i svaki broj pomozis sa brojem ispred i x 2. i onda pises isto tako samo ispod, zxnaci ne popunaav red vec pises ispod.
Sada cu ti "nacrtati"
Evo još jedan način za računanje.Uzeću primer koji ste Vi dali.
85*45=(8*4+(8+4)/2)*100+25=(32+6)*100+25=3825.
Skontao sam i ovo za kvadriranje,hvala na objašnjenju.
Написах Пајтон скрипту за рачунање по принципу који сам описао у првом посту. Скрипта није савршена али бар ради:

Python:
def get_paired_lists(a, b):
    list_a = []
    list_b = []
    pairs = []

    initial = 1
    while initial * 2 < a:
        list_a.append(initial)
        initial *= 2

        if initial * 2 > a:
            list_a.append(initial)

    counter = 0
    initial2 = b
    while counter < len(list_a):
        list_b.append(initial2)
        initial2 *= 2
        counter += 1

    pairs.append(list_a)
    pairs.append(list_b)

    return pairs


def final_calculation(paired_list, a):
    first_list = paired_list[0]
    second_list = paired_list[1]
    solution_list = []
    solution = 0
    result = a
    temp = a

    counter = len(first_list)
    while counter > 0:
        temp -= first_list[counter - 1]
        if temp < 0:
            temp += first_list[counter-1]
        elif result == 0:
            break
        else:
            result -= first_list[counter-1]
            solution_list.append(second_list[counter-1])

        counter -= 1

    for num in solution_list:
        solution += num

    return solution

x = 74991
y = 57614

value = get_paired_lists(x, y)
print(final_calculation(value, x))

Pogledajte prilog 1097430
Ovaj pajton je katastrofa.
 
Evo još jedan način za računanje.Uzeću primer koji ste Vi dali.
85*45=(8*4+(8+4)/2)*100+25=(32+6)*100+25=3825.
Skontao sam i ovo za kvadriranje,hvala na objašnjenju.

Ovaj pajton je katastrofa.
Ниси ти видео це или јаву. Ово је рај. :)

Даћу себи слободу да претпоставим како немаш искуства са програмирањем. Да имаш, сложио би се да је лако.
 
Evo još jedan način za računanje.Uzeću primer koji ste Vi dali.
85*45=(8*4+(8+4)/2)*100+25=(32+6)*100+25=3825.
Skontao sam i ovo za kvadriranje,hvala na objašnjenju.

Hehe pa da to je u sustini to, jel broj parnih brojeva dobijas x/2 :)
samo sto sam ja pokusao drugacije da objasnim, to je isto za ono sa gde imamo jedan neparan :) al tvoj metod je laksi za razumevanje :)
 
aj napravi kod za C
Ne treba da pravi kod u C.

1. python je vec originalno u C-u.
2. Ako ti bas treba C rutina, vec neko vreme ima Python -> C translator, pa interfejsuj.

Bolje da nastavi u Pythonu, zato sto se lakse cita algoritam nego sto bi to bilo da je napisan u C. Python je dizajnirao matematicar. C su dizajnirali autori operativnog sistema.
 
У школи нас уче да бројеве делимо и множимо уз помоћ таблица и разних поступака, а заснивају се на памћењу. Древни Египћани, као и Кинези, схватили су да се сваки број може приказати на један сасвим другачији начин. Иначе, овај принцип користе данашњи компјутери када деле и множе бројеве.

Примера ради, сваки број може бити приказан као сума вредности степеноване бројем два. Како то изгледа у пракси:

Узмимо за пример број 17. Како га представити?

17
------
1
2
4
8
16
Дакле, степенујемо број од 1 на даље квадратом датог броја тако да дођемо до одређене вредности. Запамтите, не можете два пута узимати исти број, већ само једном. У примеру изнад, број седамнаест састоји се од бројева 1 и 16.

Ок, када смо то разумели, хајде да помножимо два броја. Узмимо за пример 17*25:

17 x 25
-------------
1 ---- 25
2 50
4 100
8 200
16 ----400

Са леве стране имамо број 17 који се изражава као 1 и 16. Сваки број који је насупрот њима можете заокружити и доћи до закључка да је решење овог задатка 400 + 25, односно 425. Врло просто, зар не?


Хајде један пример дељења.

1075 / 25
--------------------
1 ----- 25
2 ----- 50
4 100
8 ----- 200
16 400
32 ----- 800

У овом случају је обрнуто. Сада гледамо број са леве стране, али га претстављамо користећи бројеве на десној страни. Када то учинимо, погледаћемо бројеве са леве стране и само их сабрати.
Дакле, то су бројеви 32, 8, 2 и 1. Сабирањем добијамо 43.

Врло лако, зар не? Следећи пут када треба да помножите или поделите бројеве, без таблице можете се користити овом техником.

Ako sam dobro shvatio prvi umnozak binarizujes, a onda koristis binarne faktore da mnozis drugi umnozak koje kasnije sabiras.

Da ti pomognem malo:

Ja bih voleo ovo da bude jasnije, je me zbunilo sta radi kasnija provera a onda sam shvatio da je granicni uslov. Umesto:

Python:
    initial = 1
    while initial * 2 < a:
        list_a.append(initial)
        initial *= 2

        if initial * 2 > a:
            list_a.append(initial)

predlazem malo kraci i pregledniji kod, a dobijes istu listu binarnih faktora.
ovo ti pisem vise zbog nacina razmisljanja, a ne zbog neke kritike da ti kod nije korektan.

Python:
initial = 1
list_a.append(1)
while initial * 2 < a:
    initial *= 2
    list_a.append(initial)

pogledacu jos tvog koda, sad sam malo umoran.
 
Ako sam dobro shvatio prvi umnozak binarizujes, a onda koristis binarne faktore da mnozis drugi umnozak koje kasnije sabiras.

Da ti pomognem malo:

Ja bih voleo ovo da bude jasnije, je me zbunilo sta radi kasnija provera a onda sam shvatio da je granicni uslov. Umesto:

Python:
    initial = 1
    while initial * 2 < a:
        list_a.append(initial)
        initial *= 2

        if initial * 2 > a:
            list_a.append(initial)

predlazem malo kraci i pregledniji kod, a dobijes istu listu binarnih faktora.
ovo ti pisem vise zbog nacina razmisljanja, a ne zbog neke kritike da ti kod nije korektan.

Python:
initial = 1
list_a.append(1)
while initial * 2 < a:
    initial *= 2
    list_a.append(initial)

pogledacu jos tvog koda, sad sam malo umoran.
Сам сам рекао да скрипта није нешто али ради. Фокус ми је био да реши проблем. Данас ћу проверити код и обрадити га.

Ako sam dobro shvatio prvi umnozak binarizujes, a onda koristis binarne faktore da mnozis drugi umnozak koje kasnije sabiras.

Da ti pomognem malo:

Ja bih voleo ovo da bude jasnije, je me zbunilo sta radi kasnija provera a onda sam shvatio da je granicni uslov. Umesto:

Python:
    initial = 1
    while initial * 2 < a:
        list_a.append(initial)
        initial *= 2

        if initial * 2 > a:
            list_a.append(initial)

predlazem malo kraci i pregledniji kod, a dobijes istu listu binarnih faktora.
ovo ti pisem vise zbog nacina razmisljanja, a ne zbog neke kritike da ti kod nije korektan.

Python:
initial = 1
list_a.append(1)
while initial * 2 < a:
    initial *= 2
    list_a.append(initial)

pogledacu jos tvog koda, sad sam malo umoran.
На око мислим да ниси добро урадио. Неће ти се уписати последњи број. Проверићу касније. Први пут сам број 1 убацио као и ти али сам после хтео то у петљи.
 
Сам сам рекао да скрипта није нешто али ради. Фокус ми је био да реши проблем. Данас ћу проверити код и обрадити га.


На око мислим да ниси добро урадио. Неће ти се уписати последњи број. Проверићу касније. Први пут сам број 1 убацио као и ти али сам после хтео то у петљи.

proveri :)

'Сам сам рекао да скрипта није нешто али ради. Фокус ми је био да реши проблем.'

jasno, neka rana radna verzija tipa 'propotipa'.
Python je dusu dao za dizajniranje.

Stekao sam utisak da zelis da ti neko iskomentarise kod. A i hteo sam i da shvatiim iz koda da li ima nesto drugo u algoritmu. Pogresno sam stekao utisak.

Samo jos nesto da napomenem, pa cu da se sklonim. Za ovakve situacije mislim da bi ti dobro dosao jupyter notebook.

tolicno, pozdrav
 
proveri :)

'Сам сам рекао да скрипта није нешто али ради. Фокус ми је био да реши проблем.'

jasno, neka rana radna verzija tipa 'propotipa'.
Python je dusu dao za dizajniranje.

Stekao sam utisak da zelis da ti neko iskomentarise kod. A i hteo sam i da shvatiim iz koda da li ima nesto drugo u algoritmu. Pogresno sam stekao utisak.

Samo jos nesto da napomenem, pa cu da se sklonim. Za ovakve situacije mislim da bi ti dobro dosao jupyter notebook.

tolicno, pozdrav
Не смета ми коментарисање кода. Слободно ти чини. Рогобатан је код. Пајтон је страва програмски језик. Скоро се зезао и правио интерфејс преко ткинтера за складиштење корисника у текст фајл.
 
postoji i onaj metod kod kvadriranja brojeva
Pogledajte prilog 1097366

tamo u 771 treba da je na kvadrat :)
Овај метод је занимљив,али је незгодан када множиш две цифре чији је производ већи од 50,односно када је број који треба да се упише троцифрен.:)
Ниси ти видео це или јаву. Ово је рај. :)

Даћу себи слободу да претпоставим како немаш искуства са програмирањем. Да имаш, сложио би се да је лако.
Немам превише искуства,али ми ово уопште не делује једноставно.Знам само C#. :)
 
Немам превише искуства,али ми ово уопште не делује једноставно.Знам само C#. :)

moze taj kod da se pojednostavi na vise mesta da bude pregledniji

u C nema lakog ili ugradjenog metoda za dinamicne liste, s obzirom da kod od Anonimnog koristi liste, C kod bi bio duzi, teze citljiv i pun pointera, memorijske alokacije itd da bi mogla ista tehnika da se koristi (doduse sa nekim granicnim uslovima moglo bi i sa fiksnim nizovima), ono mozda bi mogla da se koristi neka gotova biblioteka tipa GObject (barem na unix/linuxu)

U C++ bi mu bilo malo lakse, jer C++ ima poneku biblioteku viseg nivoa

U takozvanim okljastarenim C++ derivatima, kao sto su Java i C# koji se medjusobno zapravo malo vrlo malo razlikuju bi verovatno bilo nesto slicno kao u C++ koristila bi se neka vrsta List objekata, kod bi bio dovoljno razumljiv.

Jedini visak bi bilo raspisivanje pocetnih objekata pa bi morao da nam da svasta nesto jos uz kod da bi mogli da probamo kod. A i posle svake neke eksperimentalne promene isao bi korak kompilacije.... malo dosadno za danasnje doba. Generalno gledano ako bi anonimni to pisao da se algoritam koristi u nekom sistemu verovatno bi ga relativno lako prepisao u Javu ili C# a bilo bi mu verovatno mnogo lakse da iz pitona skoci na Go.

Ovako, posalje se 1 skript koji stavis u faj i izvrsis + sve se radi na visokom nivou algoritma i bez ostalog sistemskih i jezickih zavrzlama.

Sto bi programeri rekli, python je najmanje ceremonijalan.
 
Poslednja izmena:
moze taj kod da se pojednostavi na vise mesta da bude pregledniji

u C nema lakog ili ugradjenog metoda za dinamicne liste, s obzirom da kod od Anonimnog koristi liste, C kod bi bio duzi, teze citljiv i pun pointera, memorijske alokacije itd da bi mogla ista tehnika da se koristi (doduse sa nekim granicnim uslovima moglo bi i sa fiksnim nizovima), doduse mozda bi mogla da se koristi neka gotova biblioteka tipa GObject (barem na unix/linuxu)

U C++ bi mu bilo malo lakse, jer C++ ima poneku biblioteku viseg nivoa

U takozvanim okljastarenim C++ derivatima, kao sto su Java i C# koji se medjusobno zapravo malo vrlo malo razlikuju bi verovatno bilo nesto slicno kao u C++ koristila bi se neka vrsta List objekata, kod bi bio dovoljno razumljiv.

Jedini visak bi bilo raspisivanje pocetnih objekata pa bi morao da nam da svasta nesto jos uz kod da bi mogli da probamo kod. A i posle svake neke eksperimentalne promene isao bi korak kompilacije.... malo dosadno za danasnje doba. Generalno gledano ako bi anonimni to pisao da se algoritam koristi u nekom sistemu verovatno bi ga relativno lako prepisao u Javu ili C# a bilo bi mu verovatno mnogo lakse da iz pitona skoci na Go.

Ovako, posalje se 1 skript koji stavis u faj i izvrsis + sve se radi na visokom nivou algoritma i bez ostalog sistemskih i jezickih zavrzlama.

Sto bi programeri rekli, python je najmanje ceremonijalan.
Сада ћу баш да погледам овај код што сам писао да видим може ли се шта средити.
 
Ок, редуковао сам нешто мало.

Python:
def get_paired_lists(a, b):
    list_a = []
    list_b = []
    pairs = []

    initial = 1
    list_a.append(initial)
    while initial * 2 < a:
        initial *= 2
        list_a.append(initial)

    counter = 0
    initial2 = b
    while counter < len(list_a):
        list_b.append(initial2)
        initial2 *= 2
        counter += 1

    pairs.append(list_a)
    pairs.append(list_b)

    return pairs


def final_calculation(paired_list, a):
    first_list = paired_list[0]
    second_list = paired_list[1]
    solution = 0
    result = a
    temp = a

    counter = len(first_list)
    while counter > 0:
        temp -= first_list[counter - 1]
        if temp < 0:
            temp += first_list[counter-1]
        elif result == 0:
            break
        else:
            result -= first_list[counter-1]
            solution += second_list[counter-1]

        counter -= 1

    return solution


x = 74991
y = 57614

value = get_paired_lists(x, y)
solution = final_calculation(value, x)
print(solution)

Избацио сам сувишну листу, једну сувишну петљу, редуковао петље.
 

Back
Top