Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- numbers_divisible_by_all_its_digits.c by Dragan Milicev
- Find all positive integers divisible with all of their digits that are non-zero.
- You can find all my C programs at Dragan Milicev's pastebin:
- https://pastebin.com/u/dmilicev
- */
- #include <stdio.h>
- #include <limits.h> // for USHRT_MAX = 65535
- // extract digits from number into array digits[]
- // returns the number of extracted digits
- int extract_digits_from_number( int number, int digits[20] )
- {
- int i, j, number_of_digits = 0, mem;
- while( number != 0 )
- {
- digits[number_of_digits++] = number % 10; // fill array digits[]
- number = number / 10;
- }
- // reverse first number_of_digits elements of array digits[]
- for ( i=0, j=number_of_digits-1; i<number_of_digits/2; i++, j-- )
- {
- mem = digits[i];
- digits[i] = digits[j];
- digits[j] = mem;
- }
- return( number_of_digits );
- } // extract_digits_from_number
- int main(void)
- {
- int number = 12345; // our number
- int digits[20]; // array to store digits of number
- int number_of_digits=0; // number of digits in number
- int i, j, sum, counter=0;
- printf("\n number = %d and it's digits are: \n", number );
- number_of_digits = extract_digits_from_number( number, digits );
- for ( i=0; i<number_of_digits; i++)
- printf("\n %d \n", digits[i] );
- printf("\n number_of_digits = %d \n\n", number_of_digits );
- system("PAUSE");
- for ( i=1; i<USHRT_MAX; i++)
- {
- number_of_digits = extract_digits_from_number( i, digits );
- sum = 0;
- for ( j=0; j<number_of_digits; j++)
- {
- if ( digits[j] != 0 )
- {
- sum = sum + i%digits[j];
- }
- }
- if ( sum == 0 )
- {
- counter++;
- printf("\n %4d. \t %5d \n", counter, i );
- }
- }
- printf("\n\n From 1 to %d, there are %d numbers \n\n divisible with all of their digits that are non-zero. \n\n",
- USHRT_MAX, counter );
- return 0;
- } // main()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement