Δημοσιεύτηκε: 26 Μαρ 2012, 12:40
από migf1
migf1 έγραψε:
Είναι αρκετή σπατάλη, ναι ... κυρίως σε ταχύτητα εκτέλεσης. Εκείνος κάνει 1 και μόνη σύγκριση σε κάθε επανάληψη του loop, ενώ εσύ 3.

Έχει κι αυτός ένα inefficiency τώρα που το ξαναβλέπω (το οποίο εσύ δεν το έχεις)... εκτελεί 2 φορές το i*i σε κάθε επανάληψη: μια στην συνθήκη του for κι άλλη μια στην printf. Λύνεται με ανάθεση του πολλαπλασιασμού σε μια μεταβλητή, και κατόπιν χρήση αυτής της μεταβλητής στην printf...

Μορφοποιημένος Κώδικας: Επιλογή όλων
#include <stdio.h>
int main(void)
{
int n, i, res;

printf(" Enter limit on maximum square: ");
scanf("%d" , &n);

for(i=2; (res = i*i) <= n; i += 2)
printf("%d\n", res);

return 0;
}