M3.1011 PyGame[1]

Bella idea.

Cosa di oggi, fresca fresca.

Appena configurato il nuovo router (fritto il vecchio), ecco il nuovo concorso per programmatori python.

Si partecipa postando la soluzione del problema (numerica) e il sorgente del programma python usato per trovarla.

Primo problema:

L’elenco dei numeri naturali multipli di 3 o 5  e minori di 10 è: 3,5,6,9. La somma di questi multipli è 23.

Trovare la somma di tutti i multipli di 3 o 5 minori di 1000.

Buon lavoro.

p.s.

valore della prova: 1 credito

p.s.p.s

la migliore soluzione (più corta + più elegante): 3 crediti

Questa voce è stata pubblicata in Algoritmi, Aritmetica, Informatica, M3, M3.1011, Matematica e contrassegnata con , , . Contrassegna il permalink.

49 risposte a M3.1011 PyGame[1]

  1. bobcarr ha detto:

    il problema 1 è chiuso

    il sig. Poletto, non avendo inviato il programma, perde la precedenza
    che passa al sig. Bastianetto, il cui programma funziona.

    e via al prossimo

  2. bobcarr ha detto:

    il sig. Poletto risulta vincitore ma deve far pervenire il programma corretto e funzionante in python; aspetto in dropbox

  3. Stefano Poletto ha detto:

    uffa ho provato a inviare il commento con la scrittura del programma in python 4 volte ma non viene fuori T_T

  4. Stefano Poletto ha detto:

    si è esatto quello che ha detto edoardo, comunque ho tentato di inviare l’algoritmo del programma in python 2 volte ma non compare il commento…

  5. edoardobastianetto ha detto:

    Cosi dovrebbe essere giusto.
    Prima prendevamo alcuni numeri due volte perche erano multipli sia di 3 sia di 5

    #PY1 esteso

    #Multipli
    print (‘per finire la lista inserire 0’)
    multiplo = 1
    lista = []

    while multiplo 0:
    multiplo = input (‘inserisci multiplo ‘)
    lista.append(multiplo)

    del lista[len(lista)-1]

    print (‘questa e\’ la lista’)
    print lista

    #Ricerca

    limite = input (‘Inserisci il limite per cui testare ‘)
    somma = 0

    for x in range(1,limite):
    moltiplica=0
    for y in lista:
    if x % y == 0:
    somma = somma + x
    break

    print ‘Il risultato e’,somma

  6. Davide Mattiuzzo ha detto:

    Risultato: 168108

  7. Stefano Poletto ha detto:

    Il risultato è 233168 ma devo ancora scrivere il programma in python

  8. bobcarr ha detto:

    Bene, bene

    nessun risultato corretto sino a questo momento
    coraggio, vi facevo più tosti

  9. Ecco il mio programma, non sto qui a ripetere la spiegazione che risulta intuitiva dopo aver letto tutte quelle degli altri…
    a=3
    b=5
    c=1
    d=0
    e=0
    f=0
    g=0
    while (a*c)<=999 :
    if (a*c)<=999:
    d=d+(a*c)
    c=c+1
    else:
    pass
    if (b*g)<=999:
    e=e+(b*g)
    g=g+1
    else:
    pass
    ft=d+e
    print ft

    risultato 266333!

  10. Daniele Roiter ha detto:

    an caspita grz infinite allora il programma diventa (in python)…

    x = input(“Dammi il primo valore”)
    y = input(“Dammi il secondo valore”)
    a=1
    b=1
    primo=0
    secondo=0
    risultato=0
    while (x*a)<1000:
    primo=primo+(x*a)
    a=a+1

    while (y*b)<1000:
    secondo=secondo+(y*b)
    b=b+1

    risultato= primo + secondo
    print ("Il risultato e'':"),
    print risultato

    _____________________

    che brutto errore……. però adesso ho capito!!!!!!

  11. ahmed kouza ha detto:

    è un pò lunghetto spero sia giusto…
    ——————————————————-

    program multipli;

    var a,b,multa,multb,soma,somb,sommf,limiti:longint;

    begin
    writeln(‘dammi il primo valore’);
    readln(a);
    writeln(‘dammi il sendo valore’);
    readln(b);
    writeln(‘dammi il valore del limite’);
    readln(limiti);
    soma:=0;
    somb:=0;

    multa:=0;
    multb:=0;
    while multa<limiti do
    begin

    soma:=multa+soma;
    multa:=a+multa;
    end;

    while multb <limiti do
    begin

    somb:=multb+somb;
    multb:=multb+b;
    end;

    sommf:=soma+somb;
    writeln('il valore della somma dei multipli ento il limite: ', sommf);
    readln
    end.

  12. Daniele Roiter ha detto:

    a me esce come risultato 267333 però per adesso ho fatto il programma in pascal… ora lo metto in python… intanto
    program numeri;

    uses crt;

    var a, b, x, y, primo, secondo, ris, c, d, e, f : Longint;

    begin

    clrscr;
    writeln(‘Dammi il primo valore’);
    readln(x);
    writeln(‘Dammi il secondo valore’);
    readln(y);

    a:=1;
    b:=1;
    primo:=0;
    secondo:=0;
    ris:=0;

    while e<=1000 do
    begin
    c:=x*a;
    e:=c;
    primo:=primo + c;
    a:=a+1;
    end;

    while f<=1000 do
    begin
    d:=y*b;
    f:=d;
    secondo:=secondo + d;
    b:=b+1;
    end;

    ris:=primo + secondo – e – f;
    writeln('il valore finale e'':',ris)
    end.
    _________________________________________________
    ed ora in python…..

    x = input("Dammi il primo valore")
    y = input("Dammi il secondo valore")
    a=1
    b=1
    primo=0
    secondo=0
    risultato=0
    while (x*a)<=1000:
    primo=primo+(x*a)
    a=a+1

    while (y*b)<=1000:
    secondo=secondo+(y*b)
    b=b+1

    risultato= primo + secondo
    print ("Il risultato e'':"),
    print risultato
    _____________________
    tutti e due mi danno lo stesso risultato!!!!!!!!!!!!!!267333

  13. ahmed kouza ha detto:

    ok!!!

  14. Edoardo Bastianetto ha detto:

    Con questo si può testare con un numero qualsiasi di multipli senza sapere in partenza quanti sono.

    ———————————————————————————–
    #PY1 esteso

    #Multipli

    multiplo = 1
    lista = []

    print (‘per finire la lista inserire 0’)

    while multiplo 0:
    multiplo = input (‘inserisci multiplo ‘)
    lista.append(multiplo)

    del lista[len(lista)-1]

    print (‘questa e\’ la lista’)
    print lista

    #Ricerca

    limite = input (‘Inserisci il limite per cui testare ‘)
    somma = 0

    while len(lista) > 0:

    num = len(lista)-1

    contatore=0
    while lista[num]*(contatore+1) <= limite:
    contatore=contatore + 1
    somma = somma + (lista[num]*contatore)

    del lista[num]

    print 'Il risultato e',somma
    ———————————————————————————————–

    • edoardobastianetto ha detto:

      Pensavo che il multiplo poteva essere anche uguale al limite, bisogna allora cambiare
      while lista[num]*(contatore+1) <= limite: con
      while lista[num]*(contatore+1) < limite:

      e basta; se no viene preso come numero anche il limite nel caso sia un multiplo dei numeri scelti.

  15. Davide Mattiuzzo ha detto:

    Il risultato secondo il mio programma è “266333”

    • Davide Mattiuzzo ha detto:

      Il sorgente è questo:

      print (“Questo e’ un programma per calcolare la somma di tutti i multipli di due numeri che non superino un determinato valore”)
      first = input(“Scrivi il primo numero”)
      second = input(“Ora scrivi il secondo”)
      limit = input(“Infine dammi il limite massimo”)
      inc=1 # Questa e’ la variabile che inrementero’ ad ogni passo e che sara’ il coefficiente per cui moltiplicare i due numeri
      sparzf = 0 # Questa e’ la somma di tutti i multipli del primo numero minori del limite
      sparzs = 0 # Questa e’ la somma di tutti i multipli del secondo numero minori del limite

      while (first*inc) < limit:
      sparzf = sparzf + (first*inc)
      inc = inc + 1

      inc = 1

      while (second*inc) < limit:
      sparzs = sparzs + (second*inc)
      inc= inc + 1

      print ('Il risultato e\'…', sparzf + sparzs)

    • ahmed kouza ha detto:

      non è che manca un 7?? a me viene 2667333

I commenti sono chiusi.