-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathrelazione_bozza.tex
More file actions
91 lines (78 loc) · 6.81 KB
/
relazione_bozza.tex
File metadata and controls
91 lines (78 loc) · 6.81 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
\documentclass{article}
\usepackage{algpseudocode}
\usepackage{algorithm}
\title{\bfseries Relazione Progetto Programmazione Procedurale \\\itshape Verifica delle congetture di Gilbreath, Goldbach e Legendre }
\author{Alessio Biagioli, Elia Renzoni}
\date{Sessione Estiva 2022/2023}
\begin{document}
\maketitle
\newpage
\begin{center}
\section{Specifica del Problema}
\end{center}
\large
La congettura di Gilbreath asserisce che se si esaminano la sequenza dei numeri primi, la sequenza dei numeri naturali ottenuta calcolando il valore assoluto della differenza tra ciascuna coppia di numeri primi consecutivi nella precedente sequenza, l’ulteriore sequenza dei numeri naturali ottenuta calcolando il valore assoluto della differenza tra ciascuna coppia di numeri consecutivi nella precedente sequenza, e così via, il primo numero di ciascuna delle sequenze ottenute è sempre 1. La congettura debole di Goldbach asserisce che tutti i numeri naturali dispari maggiori di 5 possono essere scritti come somma di tre numeri primi. La congettura di Legendre asserisce che per ogni \begin{math}
n \in N \end{math} tale che \begin{math} n \geq 1 \end{math} esiste un numero primo compreso tra \begin{math} n^2 \end{math}ed \begin{math}(n + 1)^2 \end{math} . Scrivere un programma ANSI C che chiede all’utente quale congettura intende considerare e poi la verifica dopo aver acquisito dalla tastiera il numero di sequenze da generare nel primo caso (per ogni sequenza il programma stampa sullo schermo solo i primi 10 numeri), il numero naturale dispari maggiore di 5 nel secondo caso (il programma stampa sullo schermo i tre numeri primi), n ≥ 1 nel terzo caso (il programma stampa sullo schermo il numero primo compreso)
%NOTA CONTROLLA MEGLIO I CARATTERI !!!
\newpage
\begin{center}
\section{Analisi del Problema}
\end{center}
\begin{enumerate}
\Large
\item[2.1] \underline{Dati di Ingreso del Problema :}
\large\\I Dati di Ingresso del problema variano a seconda della congettura che si vuole risolvere; in tal senso si possono individuare i seguenti dati :
\begin{enumerate}
\item[a.] Congettura di Gilbreath : questa congettura, per essere risolta, implica un solo dato di ingresso, ovvero un numero che indichi quante sequenze creare e \begin{math} > 0\end{math}.
\item[b.] Congettura di Goldbach : il dato di ingresso per questa congettura è un numero dispari \begin{math} > 5\end{math}.
\item[c.] Congettura di Legendre : la congettura implica come dato di ingresso un numero \begin{math} n \geq 1\end{math}.
\end{enumerate}
\Large\item[2.2] \underline{Dati di Uscita del Problema : }
\large \\I dati di uscita del problema variano, anch'essi, in base alla congettura che si vuole verificare, il seguente elenco illustra i dati di uscita per ogni congettura :
\begin{enumerate}
\item[a.] Congettura di Gilbreath : questa congettura implica come dato di uscita delle sequenze, il cui numero deve essere pari al dato di ingresso per questa congettura.
\item[b.] Congettura di Goldbach : i dati di uscita sono tre numeri \begin{math} x, y, z\end{math} la cui somma deve essere uguale al dato di ingresso.
\item[c.] Congettura di Legendre : il dato di uscita per questa congettura è un numero primo \begin{math} x\end{math}.
\end{enumerate}
\Large\item[2.3] \underline{Relazioni Intercorrenti : }
\large \\Le relazioni intercorrenti, le quali indicano come ottenere i dati di uscita attesi, partendo dai dati di ingresso, variano a seconda della congettura scelta, qui di seguito sono enumerate le relazioni intercorrenti a seconda della congettura scelta :
\begin{enumerate}
\item[a.] Congettura di Gilbreath : questa congettura si considera verificata quando ciascuna sequenza generata inizia con il numero \begin{math}1\end{math}, se nessuna o solo parte delle sequenze generate non inizia con il sudetto valore, allora la congettura non può considerarsi verificata.
\item[b.] Congettura di Goldbach : la congettura si considera verificata quando, dato un numero dispari \begin{math}n > 5\end{math} esso è esprimibile come somma di tre numeri primi \begin{math} x, y, x : x + y + z = n\end{math}.
\item[c.] Congettura di Legendre : la congettura si considera verificata quando un numero primo \begin{math} x \end{math} rispetta la seguente proprietà : \begin{math}n^2 \leq x \leq (n + 1)^2\end{math}.
\end{enumerate}
\end{enumerate}
\newpage
\begin{center}
\section{Progettazione dell'Algoritmo}
\end{center}
\begin{enumerate}
\Large \item[3.1] \underline{Strutture e Rappresentazione dei Dati : }
\large \\I dati di ingresso e quelli di uscita di cui l'algoritmo si poggia sono rappresentati nel seguente modo :
\begin{enumerate}
\item[a.] Dati di Ingresso : I dati di ingresso delle congetture sono rappresentati tramite un tipo strutturato composto da tre campi, corrispondenti al numero dei dati di ingresso per le congetture; il tipo dei campi è omogeneo, in quanto i dati di ingresso sono tutti di tipo intero. Inoltre abbiamo deciso di rappresentare i dati di ingresso corrispondenti agli identificativi delle congetture - utili per selezionare la congettura da risolvere - tramite delle macro costanti, in questo modo si permette una più rapida ed efficacie manutenione del programmma.
\item[b.] Dati di Uscita : I dati di uscita sono per lo più numeri primi; abbiamo quindi deciso di memorizzare la sequenza di numeri primi generata in una lista doppiamente concatenata, in questo modo, avendo a disposizione l'indirizzo di memoria della testa della lista concatenata, è facile fare accesso a tutti i suoi elementi. la lista doppiamente concatenata è composta da oggetti aventi tre attributi, ovvero due attributi puntatore e un attributo chiave, dove quest'ultimo conterrà un numero primo.
\end{enumerate}
\Large \item[3.2] \underline{Passi dell'Algoritmo : }
\large\\ Qui di seguito sono riportati i passi principali dell'algoritmo, descritti tramite linguaggio naturale :
% INIZIO ALGORITMO
\begin{algorithmic}
\State 1. Acquisizione dell'indentificativo della congettura;
\State 2. Genera la sequenza di numeri primi;
\State 3. Se la congettura scelta é Gilbreath :
\State 3.1. Acquisisci e valida i dati di ingresso;
\State 3.2. Invoca la funzione per verificare la congettura;
\State 4. Se la congettura scelta é Goldbach :
\State 4.1. Acquisisci e valida i dati di ingresso;
\State 4.2. Invoca la funzione per verificare la congettura;
\State 5. Altrimenti :
\State 5.1. Acquisisci e valida i dati di ingresso;
\State 5.2. Invoca la funzione per verificare la congettura.
\end{algorithmic}
\end{enumerate}
\newpage
\begin{center}
\section{Implementazione dell'Algoritmo}
\end{center}
File Sorgente : verifica\textunderscore congetture.c
\end{document}