Δημοσιεύτηκε: 04 Ιούλ 2011, 10:35
Σε ευχαριστώ για την προσπάθεια!
Το πρόβλημα ήταν ότι δεν έιχα κοιμηθεί 1 βράδυ και δεν άντεχα άλλο. Μου την έδωσε και λίγο το πρόβλημα και τα παράτητα (λεω και αύριο μέρα είναι). Λοιπόν, όταν προσπαθούσα να το λύσω σκεφτόμουν πολλούς τρόπους και σκέφτηκα μηπως να το συζητήσουμε? :/ Όπως είπες υπάρχουν πολλοι τρόποι να λυθεί...
θα το ξανακοιτάξω απο την αρχή και θα προσθέσω και τα υπόλοιπα στο αρχικό...
θα το ξανακοιτάξω απο την αρχή και θα προσθέσω και τα υπόλοιπα στο αρχικό...
migf1 έγραψε:Διαβάζω πως δεν χρειάζεται να εξετάζουμε το modulo όλων των αριθμών από το 2 έως το i-1, αρκεί να εξετάσουμε έως και την τετραγωνική ρίζα του i, οπότε μειώνεται πολύ ο χρόνος εκτέλεσης.
Άρα ο νέος κώδικας είναι:
- Κώδικας: Επιλογή όλων
/* -------------------------------------------------------------
* Τυππωνει και αθροίζει του πρώτους αριθμούς από το 1 έως το MAX
* -------------------------------------------------------------
*/
#include <stdio.h>
#include <math.h>
#define MAX 15
int main ( void )
{
long primesum = 0;
register int i, j;
int isprime = 1;
for (i=2; i <= MAX; i++)
{
for (j=2; j<=sqrt(i); j++)
{
if ( i%j == 0 ) {
isprime = 0; // FALSE
break;
}
}
if ( isprime ) {
printf("%d is a prime\n", i);
primesum += i;
}
isprime = 1; // TRUE
}
printf("\nSum of prime numbers from 1 to %d = %ld\n", MAX, primesum);
return 0;
}
Διαβάζω επίσης πως υπάρχουν ένα κάρο ταχύτεροι αλγόριθμοι, αλλά νυστάζω πολύ τώρα για να τους παρακολουθήσω.