This function will take a number (n) and give you its prime factorization.
It runs fine, but I have a sneaking suspicion that there is a more "intuitive" way for the program to take the prime factorization of a negative number--that is, I want the program to be able to factor out a -1 instead of me just printing it.
Code:
//Factors.c//Prime Factorization
#include<stdio.h>
#include<math.h>
#include<stdlib.h>
#include<stdbool.h>
Primality();
//primality function which will determine if a number is prime.
//long Primality(long n)
//{
//check to see if the number is a multiple of 2(ie the number is even) and is not equal to 2
// if(n % 2 == 0 && n != 2)
// {
// return false; //if the number is even or equal to 2, return false and do not count these numbers
// }//end if
//once we determine that a number is not even or equal to 2, we can check the odds.
// for(long i = 3; i * i <= n; i += 2)
// {
// if(n % i == 0)
// {
// return false;
// }//end if
// }//end for
// return true;
//}//end function primality
int main()
{
long n;//user generated number
long i;//incrementer
printf("Enter a number to get its prime factorization: ");
scanf("%ld", &n);
//if the number is prime, state so
if(Primality(n))
{
printf("%ld: This number is prime\n", n);
}//end if
//if number is negative, take the absolute value of the number, but indicate that
//one of the factors of this number is negative 1
if(n < 0)
{
n = abs(n);
printf("-1\n");
}//end if
//if the number is a composite number
else
{
printf("The Prime factorization of %ld: \n", n);
}//end else
//for each potential factor, i
for(i = 2; i * i <= n; i++)
{
//if i is a factor of N, repeatedly divide it out
while (n % i == 0)
{
printf("%ld\n", i);
n = n / i;
}//end while
}//end for
//if the biggest number only occurs once, n > 1
if (n > 1) printf("%ld\n", n);
}//end main