← Playground

Update UnsignedInt64_Factorization

6f3e025aaabda01c887359e6d1ecf4300ad64226 · darakna · Jan 12, 2017 23:06

+27 −5 · 1 file changed

  • UnsignedInt64_Factorization +27 −5
diff --git a/UnsignedInt64_Factorization b/UnsignedInt64_Factorization
index fa71b12..b039b63 100644
--- a/UnsignedInt64_Factorization
+++ b/UnsignedInt64_Factorization
@@ -3,6 +3,8 @@
 
 #include "stdafx.h"
 #include "math.h"
+#include <time.h>
+#include <windows.h>
 
 
 
@@ -24,7 +26,7 @@ unsigned long long int number_sum(unsigned long long int is_3_div)
 	int sum = 0;
 	while (is_3_div != 0)
 	{
-		sum += is_3_div % 10;
+		sum = sum + is_3_div % 10;
 		is_3_div = is_3_div / 10;
 	}
 
@@ -72,31 +74,51 @@ void rest_factors(unsigned long long int &number, unsigned long long int divs[],
 			rest_factors(number, divs, div_n);
 		}
 	}
+
 }
 
 int main()
 {
+
+
 	unsigned long long int big_number, factors[100], num_div=0;
 	printf("Enter number: ");
 
 	scanf_s("%I64u", &big_number);
-	printf("Number is: %I64u\n", big_number);
+	printf("Number is:    %I64u\n", big_number);
+
+	DWORD dw1 = GetTickCount();
 
 	process_2(big_number, factors, num_div);
 	process_3(big_number, factors, num_div);
 	process_5(big_number, factors, num_div);
-	rest_factors(big_number, factors, num_div);
+	
+
+	if (big_number > 1)
+	{
+		rest_factors(big_number, factors, num_div);
+		if (big_number != 1)
+		{
+			factors[num_div] = big_number;
+			num_div++;
+		}
+
 
+	}
 
-	printf("Biggest factor is: %I64u\n", big_number);
+	printf("Biggest factor is: %I64u\n", factors[num_div-1]);
 
-	printf("Number of factors: %I64u\nDivisors: %I64u ", num_div + 1, big_number);
+	printf("Number of factors: %I64u\nDivisors: ", num_div);
 	for (unsigned long long int i = 0; i < num_div; i++)
 	{
 		printf("%I64u ",factors[num_div - i - 1]);
 	}
 	printf("\n");
 
+	DWORD dw2 = GetTickCount();
+
+	printf("Time difference is %lu milliSeconds\nStart: %lu\nEnd: %lu\n", dw2 - dw1, dw2, dw1);
+
     return 0;
 }