samedi 9 juillet 2016

Linear solution for 2^x *3^y*5^z


I need to generate 1,2,3,4,5,6,8,9,10,12,15,16 etc (a given n numbers) (containing only powers of 2,3 and 5) in ascending order in linear time(O(n)). I have the following code(I'm not very sure of its complexity,would also appreciate an answer on its complexity) bool s_a (int a) { while (a % 2 == 0) a = a / 2; while (a % 3 == 0) a = a / 3; while (a % 5 == 0) a = a / 5; if (a == 1) return true; else return false; } void s_b (int n) { unsigned int k = 1,nc = 1; while ( k <= n) { if(s_a(nc) == true) { cout << nc << " "; k++; } nc++; } }

Aucun commentaire:

Enregistrer un commentaire