Skip to content

Commit e48b9ac

Browse files
authored
Merge pull request keon#740 from vicky1999/master
finding number of digits using logs created with unit tests
2 parents 162024f + fec7a5b commit e48b9ac

4 files changed

Lines changed: 34 additions & 1 deletion

File tree

.gitignore

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,5 +13,7 @@ __pycache__/
1313
/*.egg
1414
# docs
1515
build/
16-
16+
pythonenv3.8/
1717
.vscode/
18+
# Ignoring the virtual Environment when using GitHub Codespaces
19+
.venv/

algorithms/maths/__init__.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,8 @@
1818
from .find_order_simple import *
1919
from .find_primitive_root_simple import *
2020
from .diffie_hellman_key_exchange import *
21+
from .num_digits import *
2122
from .power import *
2223
from .magic_number import *
2324
from .krishnamurthy_number import *
25+

algorithms/maths/num_digits.py

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
"""
2+
num_digits() method will return the number of digits of a number in O(1) time using math.log10() method.
3+
"""
4+
5+
import math
6+
7+
def num_digits(n):
8+
n=abs(n)
9+
if(n==0):
10+
return 1;
11+
return int(math.log10(n))+1

tests/test_maths.py

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,8 @@
2222
magic_number,
2323
find_order,
2424
find_primitive_root,
25+
alice_private_key, alice_public_key, bob_private_key, bob_public_key, alice_shared_key, bob_shared_key, diffie_hellman_key_exchange,
26+
num_digits,
2527
alice_private_key, alice_public_key, bob_private_key, bob_public_key, alice_shared_key, bob_shared_key,
2628
diffie_hellman_key_exchange, krishnamurthy_number
2729
)
@@ -448,5 +450,21 @@ def test_find_order_simple(self):
448450
self.assertTrue(diffie_hellman_key_exchange(11, 971))
449451

450452

453+
class TestNumberOfDigits(unittest.TestCase):
454+
"""[summary]
455+
Test for the file num_digits.py
456+
457+
Arguments:
458+
unittest {[type]} -- [description]
459+
"""
460+
def test_num_digits(self):
461+
self.assertEqual(2,num_digits(12))
462+
self.assertEqual(5,num_digits(99999))
463+
self.assertEqual(1,num_digits(8))
464+
self.assertEqual(1,num_digits(0))
465+
self.assertEqual(1,num_digits(-5))
466+
self.assertEqual(3,num_digits(-254))
467+
468+
451469
if __name__ == "__main__":
452470
unittest.main()

0 commit comments

Comments
 (0)