Visualizzazione dei risultati da 1 a 3 su 3

Visualizzazione discussione

  1. #1
    Utente di HTML.it
    Registrato dal
    May 2009
    Messaggi
    87

    [C] Lista numeri scomponibili in somma di due quadrati

    Ciao a tutti come da titolo dovrei fare un programma,sicuramente banale e spero non offensivo per voi, che,dato un certo numero n inserito da tastiera,vada a controllare che ogni numero da 1 ad n possa essere scomposto come somma di quadrati,una volta stabilito ciò bisogna stampare la lista dei numeri che effettivamente possono essere riscritti come somma di due quadrati.

    Per esempio, se n=8
    avremo:
    2=1^2 + 1^2
    5=1^2 + 2^2
    8=2^2 + 2^2

    In effetti il programmino,per come l'ho scritto,sembra funzionare,l'unica cosa,un pò fastidiosa è il fatto che ignori la proprietà commutativa,quindi mi scrive due volte il 5 per esempio.Sapete come evitare queste ripetizioni senza dover usare controlli tra array o cose del genere?

    (tra l'altro ciò non si verifica per il primo e l'ultimo valore,immagino perchè entrambi partano da 1 a ciclare e c'è un solo caso in cui entrambi sono a 1 per esempio)

    codice:
    #include <stdio.h>
    #include <stdlib.h>
    
    
    /*    ->VARIANTE<-
    SCRIVERE UN PROGRAMMA CHE LEGGE UN INTERO POSITIVO N E STAMPA LA SEQUENZA DI TUTTI I NUMERI SCOMPONIBILI COME SOMMA DI DUE QUADRATI*/
    
    
    // primoA=primo Addendo secondoA=secondo Addendo
    
    
    
    int main()
    {
        int a,primoA,secondoA,tot,n;
        
        printf("\n inserisci numero\n\n");
        scanf("%d",&n);
        
        for(int z=1;z<=n;z++)
        {
            a=z;    
            for(int i=1;i<=a;i++)
            {
                    primoA=i*i;
                    for(int j=1;j<=a;j++)
                    {
                            secondoA=j*j;
                            tot=primoA+secondoA;
                            if(tot==a)
                            {
                                      
                                      printf("\n%d = [ %d^2 + %d^2 ]\n",z,i,j);
                                      
                            }
                    }
                            
            }
        }
       
        system ("pause");
        return 0;
    }
    Grazie mille.
    Ultima modifica di MItaly; 20-10-2013 a 16:54

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.