Article Categories
- All Categories
-
Data Structure
-
Networking
-
RDBMS
-
Operating System
-
Java
-
MS Excel
-
iOS
-
HTML
-
CSS
-
Android
-
Python
-
C Programming
-
C++
-
C#
-
MongoDB
-
MySQL
-
Javascript
-
PHP
-
Economics & Finance
Python Program to Find Sum of First and Last Digit
In this article, we explore how to find the sum of the first and last digits of an integer. This task requires extracting the first digit (leftmost) and the last digit (rightmost) from any number, then adding them together. We'll demonstrate four different approaches to solve this problem.
Method 1: Using Repeated Division to Count Digits
This approach counts digits by repeatedly dividing the number by 10, then extracts the first digit using division and the last digit using modulo ?
import math
def count_digits(number):
count = 0
while number != 0:
number //= 10
count += 1
return count
def sum_first_last_digits(number):
digit_count = count_digits(number)
first_digit = math.floor(number / 10**(digit_count - 1))
last_digit = number % 10
return first_digit + last_digit
numbers = [881234, 954321, 7178952, 20033, 459, 20069]
for num in numbers:
result = sum_first_last_digits(num)
first = math.floor(num / 10**(count_digits(num) - 1))
last = num % 10
print(f"Number: {num}, First: {first}, Last: {last}, Sum: {result}")
Number: 881234, First: 8, Last: 4, Sum: 12 Number: 954321, First: 9, Last: 1, Sum: 10 Number: 7178952, First: 7, Last: 2, Sum: 9 Number: 20033, First: 2, Last: 3, Sum: 5 Number: 459, First: 4, Last: 9, Sum: 13 Number: 20069, First: 2, Last: 9, Sum: 11
Method 2: Using math.log10() to Count Digits
This method uses logarithms to calculate the number of digits more efficiently ?
import math
def count_digits_log(number):
return math.floor(math.log10(number) + 1)
def sum_first_last_digits_log(number):
digit_count = count_digits_log(number)
first_digit = math.floor(number / 10**(digit_count - 1))
last_digit = number % 10
return first_digit + last_digit
numbers = [1234, 54321, 678952, 200, 45, 10069]
for num in numbers:
result = sum_first_last_digits_log(num)
first = math.floor(num / 10**(count_digits_log(num) - 1))
last = num % 10
print(f"Number: {num}, First: {first}, Last: {last}, Sum: {result}")
Number: 1234, First: 1, Last: 4, Sum: 5 Number: 54321, First: 5, Last: 1, Sum: 6 Number: 678952, First: 6, Last: 2, Sum: 8 Number: 200, First: 2, Last: 0, Sum: 2 Number: 45, First: 4, Last: 5, Sum: 9 Number: 10069, First: 1, Last: 9, Sum: 10
Method 3: Converting to String and Using Length
This approach converts the integer to a string to easily count digits, then uses mathematical operations to extract first and last digits ?
import math
def count_digits_string(number):
return len(str(number))
def sum_first_last_digits_string(number):
digit_count = count_digits_string(number)
first_digit = math.floor(number / 10**(digit_count - 1))
last_digit = number % 10
return first_digit + last_digit
numbers = [11234, 554321, 6789521, 2004, 3455, 60069]
for num in numbers:
result = sum_first_last_digits_string(num)
first = math.floor(num / 10**(count_digits_string(num) - 1))
last = num % 10
print(f"Number: {num}, First: {first}, Last: {last}, Sum: {result}")
Number: 11234, First: 1, Last: 4, Sum: 5 Number: 554321, First: 5, Last: 1, Sum: 6 Number: 6789521, First: 6, Last: 1, Sum: 7 Number: 2004, First: 2, Last: 4, Sum: 6 Number: 3455, First: 3, Last: 5, Sum: 8 Number: 60069, First: 6, Last: 9, Sum: 15
Method 4: Using String Indexing
This is the simplest approach convert to string and use index positions to directly access first and last characters ?
def sum_first_last_digits_index(number):
str_num = str(number)
first_digit = int(str_num[0])
last_digit = int(str_num[-1])
return first_digit + last_digit
numbers = [12343, 543210, 6789529, 9200, 45, 810069]
for num in numbers:
str_num = str(num)
first = int(str_num[0])
last = int(str_num[-1])
result = sum_first_last_digits_index(num)
print(f"Number: {num}, First: {first}, Last: {last}, Sum: {result}")
Number: 12343, First: 1, Last: 3, Sum: 4 Number: 543210, First: 5, Last: 0, Sum: 5 Number: 6789529, First: 6, Last: 9, Sum: 15 Number: 9200, First: 9, Last: 0, Sum: 9 Number: 45, First: 4, Last: 5, Sum: 9 Number: 810069, First: 8, Last: 9, Sum: 17
Comparison
| Method | Time Complexity | Best For | Pros |
|---|---|---|---|
| Repeated Division | O(log n) | Pure mathematical approach | No string conversion |
| math.log10() | O(1) | Efficient digit counting | Fastest for large numbers |
| String Length | O(log n) | Easy to understand | Simple digit counting |
| String Indexing | O(log n) | Simplest code | Most readable |
Conclusion
The string indexing method (Method 4) is the most readable and straightforward approach. For performance-critical applications with large numbers, the math.log10() method offers the best efficiency. Choose the method that best fits your specific requirements and coding style preferences.
