-----<<<<<

i'm writing a program to find the prime digital root, which is when you add all the indiv. #s of an integer until you reach a single digit number OR when you reach a prime number

2^31 = (2147483648) = 2+1+4+7+4+8+3+6+4+8 = (47) = 4+7 = (11) = 1+1 = (2)

the prime digital root is 47 because 47 is prime... but assuming 47 and 11 aren't prime, it would stop at 2 because it is a single digit number and that would be the prime digital root

right now, my forward functions are countNumbers(counts the numbers) --> digitSum(adds the digits of an integer) --> primeChecker(checks if digitSum is prime) and then after that i'd just have to add one that checks whether it is a single digit or not

i am confused about a few things:

1.) what if i only want to run countNumbers() in my forward function to count the number of digits in the integer to put in my while loop in main. how would i do that?

2.) how would i incorporate my forward functions into my while loop so that the program (not finished) actually adds the digits of an integer, checks if it's prime, checks if it's a single digit or not and then goes back to the sum of the digits of the integer and starts the process all over again?

thanks!

----->>>>>Code:/*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@ @ @ @ Forward Function Declarations @ @ @ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@*/ int countNumbers(unsigned int N) unsigned int digitSum(unsigned int N, unsigned int numberLength); unsigned int primeChecker(unsigned int digitSum); /*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@ The main function @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@*/ int main(void) { unsigned int N, numberLength, duplicateN, digitSum, digitSumDuplicate, i, sum[max_array_length]; int isPrime; FILE *input, *output; numberLength = 1; //initialize numberLength at 1 isPrime = 0; //we assume number is not prime until proven by primeChecker() i = 0; //initialize first value in array sum[] to be 0 if ((input = fopen("prime_root.dat", "r")) == NULL) { printf("Error: cannot read the file prime_root.dat\n"); return 1; } if ((output = fopen("prime_root.out", "w")) == NULL) { printf("Error: cannot write to the file prime_root.out\n"); fclose(input); return 1; } while() { fscanf(input, "%d\n", &N); while(N != 0) { if (numberLength > 1) return 0; } /*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@ @ @ @ Function Definitions @ @ @ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@*/ /************************************************** **************************** * * Function countNumbers() * ************************************************** ***************************** * * This function takes an integer N as input, counts how many * individual numbers it consists of and returns the number. * ************************************************** ****************************/ int countNumbers(unsigned int N) { duplicateN = N; while(duplicateN >= 10) { duplicateN = duplicateN / 10; numberLength++; } return numberLength; } /************************************************** **************************** * * Function digitSum() * ************************************************** ***************************** * * This function takes integers N and numberLength as input and , * length of the integer, respectively, and adds the digits of the * input and returns the result ************************************************** ****************************/ unsigned int digitSum(unsigned int N, unsigned int numberLength) { for(numberLength > 0) { sum[i] = N % 10; N = N / 10; i++; numberLength--; } for(i > 0) { digitSum += sum[i-1]; i--; } return digitSum; } /************************************************** **************************** * * Function primeChecker() * ************************************************** ***************************** * * This function takes integer digitSum and checks if it is the prime * number and then returns isPrime either 0 for no or 1 for yes. * ************************************************** ****************************/ unsigned int primeChecker(unsigned int digitSum) { for(digitSumDuplicate = digitSum; digitSumDuplicate > 1; digitSumDuplicate--) { if(digitSum % digitSumDuplicate == 0) { isPrime = 1; } else { N = digitSum; } } return isPrime; }

:P :P