S.
No Programs Date Signature
1 COMPUTE THE GCD OF TWO
NUMBERS
2 FIND THE SQUARE ROOT OF A
NUMBER (NEWTON‘S METHOD)
3 EXPONENTIATION (POWER OF
A NUMBER)
4 FIND THE MAXIMUM OF A LIST
OF NUMBERS
5 LINEAR SEARCH AND BINARY
SEARCH
6 SELECTION SORT
7 INSERTION SORT
8 MERGE SORT
9 FIRST N PRIME NUMBERS
10 MULTIPLY MATRICES
11 PROGRAMS THAT TAKE
COMMAND LINE ARGUMENTS
(WORD COUNT)
12 FIND THE MOST FREQUENT
WORDS IN A TEXT READ FROM
A FILE.
13 SIMULATE ELLIPTICAL ORBITS
IN PYGAME
14 SIMULATE BOUNCING BALL
USING PYGAME
PROGRAM-1: COMPUTE THE GCD OF TWO
NUMBERS
def gcd(a, b):
# Base case: if both numbers are the same, that is the GCD
if a == b:
return a
# If a > b, subtract b from a
elif a > b:
return gcd(a - b, b)
# If b > a, subtract a from b
else:
return gcd(a, b - a)
x = int(input(“Enter a number:”))
y = int(input(“Enter a number:”))
print("GCD of", x, "and", y, "is:", gcd(x, y))
PROGRAM-2: FIND THE SQUARE ROOT OF A
NUMBER (NEWTON ‘S METHOD)
def sqrt_newton(N, tolerance=1e-10, max_iter=100):
# Starting guess, we can use N itself or N/2
x = N / 2.0
# Iterate using Newton's method
for _ in range(max_iter):
# Apply the Newton's method formula
x_new = 0.5 * (x + N / x)
# If the difference between new and old guess is small enough, stop
if abs(x_new - x) < tolerance:
return x_new
# Update guess for next iteration
x = x_new
return x # Return the approximated result after max iterations
number = 25
result = sqrt_newton(number)
print(f"The square root of {number} is approximately {result}")
PROGRAM-3: EXPONENTIATION (POWER OF A
NUMBER)
def power(base, exp):
# Base case: exp = 0, any number to the power of 0 is 1
if exp == 0:
return 1
# If exponent is negative, calculate power of positive exponent and
take reciprocal
elif exp < 0:
return 1 / power(base, -exp)
# If exponent is even, use exponentiation by squaring
elif exp % 2 == 0:
half = power(base, exp // 2)
return half * half
# If exponent is odd
else:
return base * power(base, exp - 1)
base = 2
exponent = 10
result = power(base, exponent)
print(f"{base} raised to the power of {exponent} is {result}")
PROGRAM-4: FIND THE MAXIMUM OF A LIST OF
NUMBERS
# Function to find the maximum in a list using a loop
def find_max(numbers):
max_value = numbers[0]
for num in numbers:
if num > max_value:
max_value = num
return max_value
# Take user input for a list of numbers
user_input = input("Enter a list of numbers separated by spaces: ")
# Convert the input string into a list of integers
numbers = [int(num) for num in user_input.split()]
# Find the maximum value in the list
max_value = find_max(numbers)
# Print the result
print(f"The maximum value in the list is: {max_value}")
PROGRAM-5: LINEAR SEARCH & BINARY SEARCH
def linear_search(arr, target):
# Iterate through each element in the list
for i in range(len(arr)):
if arr[i] == target:
return i # Target found, return the index
return -1 # Target not found
numbers = [5, 3, 9, 1, 6, 7, 2]
target = int(input("Enter a number to search: "))
result = linear_search(numbers, target)
if result != -1:
print(f"Element {target} found at index {result}.")
else:
print(f"Element {target} not found.")
def binary_search(arr, target):
low = 0
high = len(arr) - 1
while low <= high:
mid = (low + high) // 2 # Find the middle index
if arr[mid] == target:
return mid # Target found
elif arr[mid] < target:
low = mid + 1 # Search the right half
else:
high = mid - 1 # Search the left half
return -1 # Target not found
numbers = [1, 3, 5, 6, 7, 9] # Sorted list
target = int(input("Enter a number to search: "))
result = binary_search(numbers, target)
if result != -1:
print(f"Element {target} found at index {result}.")
else:
print(f"Element {target} not found.")
PROGRAM-6: SELECTION SORT
def selection_sort(arr):
n = len(arr)
# Iterate over each element of the list
for i in range(n):
# Find the smallest element in the remaining unsorted portion of the
list
min_index = i
for j in range(i + 1, n):
if arr[j] < arr[min_index]:
min_index = j
# Swap the found minimum element with the first element of the
unsorted portion
arr[i], arr[min_index] = arr[min_index], arr[i]
numbers = [64, 25, 12, 22, 11]
print("Original list:", numbers)
selection_sort(numbers)
print("Sorted list:", numbers)
PROGRAM-7: INSERTION SORT
def insertion_sort(arr):
# Start from the second element (index 1)
for i in range(1, len(arr)):
key = arr[i] # The element to be inserted
j = i - 1 # The index of the previous element
# Move elements of arr[0..i-1] that are greater than key
# to one position ahead of their current position
while j >= 0 and arr[j] > key:
arr[j + 1] = arr[j]
j -= 1
# Insert the key at the correct position
arr[j + 1] = key
numbers = [64, 25, 12, 22, 11]
print("Original list:", numbers)
insertion_sort(numbers)
print("Sorted list:", numbers)
PROGRAM-8: MERGE SORT
def merge_sort(arr):
# Base case: If the array has one or zero elements, it's already sorted
if len(arr) <= 1:
return arr
# Step 1: Divide the array into two halves
mid = len(arr) // 2
left_half = arr[:mid]
right_half = arr[mid:]
# Step 2: Recursively sort each half
left_half = merge_sort(left_half)
right_half = merge_sort(right_half)
# Step 3: Merge the two sorted halves
return merge(left_half, right_half)
def merge(left, right):
sorted_array = []
i=j=0
# Merge the two arrays until one of them is exhausted
while i < len(left) and j < len(right):
if left[i] < right[j]:
sorted_array.append(left[i])
i += 1
else:
sorted_array.append(right[j])
j += 1
# If there are any remaining elements in left, add them
while i < len(left):
sorted_array.append(left[i])
i += 1
# If there are any remaining elements in right, add them
while j < len(right):
sorted_array.append(right[j])
j += 1
return sorted_array
arr = [38, 27, 43, 3, 9, 82, 10]
sorted_arr = merge_sort(arr)
print("Sorted array:", sorted_arr)
PROGRAM-9: FIRST N PRIME NUMBERS
import math
def is_prime(num):
"""Check if a number is prime."""
if num <= 1:
return False
for i in range(2, int(math.sqrt(num)) + 1):
if num % i == 0:
return False
return True
def first_n_primes(n):
"""Return the first N prime numbers."""
primes = []
num = 2 # Start checking from the first prime number
while len(primes) < n:
if is_prime(num):
primes.append(num)
num += 1
return primes
n = int(input("ENTER N:"))
primes = first_n_primes(n)
print(f"The first {n} prime numbers are: {primes}")
PROGRAM-10: MULTIPLY MATRICES
def multiply_matrices(A, B):
# Get dimensions of A and B
rows_A = len(A)
cols_A = len(A[0])
rows_B = len(B)
cols_B = len(B[0])
# Check if multiplication is possible (columns of A == rows of B)
if cols_A != rows_B:
raise ValueError("Number of columns of A must be equal to
number of rows of B.")
# Initialize result matrix C with zeros
C = [[0] * cols_B for _ in range(rows_A)]
# Perform matrix multiplication
for i in range(rows_A):
for j in range(cols_B):
for k in range(cols_A): # or range(rows_B), since cols_A ==
rows_B
C[i][j] += A[i][k] * B[k][j]
return C
A=[
[1, 2],
[3, 4]
]
B=[
[5, 6],
[7, 8]
]
result = multiply_matrices(A, B)
# Printing the result
for row in result:
print(row)
PROGRAM-11: PROGRAMS THAT TAKE COMMAND
LINE ARGUMENTS (WORD COUNT)
import sys
def count_words_in_file(filename):
"""Count the number of words in a file."""
try:
with open(filename, 'r') as file:
# Read the file content and split it into words
text = file.read()
words = text.split() # Default split by whitespace (spaces,
newlines, etc.)
return len(words)
except FileNotFoundError:
print(f"Error: The file '{filename}' was not found.")
return 0
def main():
if len(sys.argv) != 2:
print("Usage: python word_count.py <filename>")
sys.exit(1) # Exit the program if incorrect number of arguments
filename = sys.argv[1] # The first command-line argument is the file
name
word_count = count_words_in_file(filename)
print(f"The file '{filename}' contains {word_count} words.")
if __name__ == "__main__":
main()
PROGRAM-12: FIND THE MOST FREQUENT WORDS
IN A TEXT READ FROM A FILE.
import sys
from collections import Counter
import re
def count_most_frequent_words(filename, top_n=10):
"""Count the most frequent words in the given file."""
try:
with open(filename, 'r') as file:
# Read the entire file content
text = file.read()
# Convert the text to lowercase to make the counting case-
insensitive
text = text.lower()
# Use regular expression to extract words (remove punctuation)
words = re.findall(r'\b\w+\b', text)
# Count word frequencies using Counter
word_counts = Counter(words)
# Get the most common 'top_n' words
most_common_words = word_counts.most_common(top_n)
return most_common_words
except FileNotFoundError:
print(f"Error: The file '{filename}' was not found.")
return []
def main():
if len(sys.argv) != 2:
print("Usage: python most_frequent_words.py <filename>")
sys.exit(1)
filename = sys.argv[1] # The first command-line argument is the file
name
most_common_words = count_most_frequent_words(filename)
if most_common_words:
print("Most frequent words in the file:")
for word, count in most_common_words:
print(f"{word}: {count}")
if __name__ == "__main__":
main()
PROGRAM-13: SIMULATE ELLIPTICAL ORBITS IN
PYGAME
import pygame
import math
# initialize the pygame
pygame.init()
# define width of screen
width = 1000
# define height of screen
height = 600
screen_res = (width, height)
pygame.display.set_caption("GFG Elliptical orbit")
screen = pygame.display.set_mode(screen_res)
# define colors in RGB format
# These colors will be used in our game
red = (255, 0, 0)
green = (0, 255, 0)
blue = (0, 0, 255)
cyan = (0, 255, 255)
# centers of screen
X_center = width//2
Y_center = height//2
# radius of ellipse
# X_ellipse is major radius of ellipsis
X_ellipse = 400
# Y_ellipse is minor radius of ellipsis
Y_ellipse = 225
# pygame.time.Clock() will be used further
# in the game loop to control
# the speed of the planet.
clock = pygame.time.Clock()
while True:
for degree in range(0, 360, 1):
# event loop
for event in pygame.event.get():
if event.type == pygame.QUIT:
exit()
# fill black color on screen
screen.fill([0, 0, 0])
# We will find coordinates of 2 planet
# that will rotate in same ellipse
# calculate coordinates of planet 1
# x_planet is x coordinate
x_planet_1 = int(math.cos(degree * 2 * math.pi/360)
* X_ellipse) + X_center
# y_planet is y coordinate
y_planet_1 = int(math.sin(degree * 2 * math.pi/360)
* Y_ellipse) + Y_center
# calculate coordinates of planet 2
# As we want our planets to be opposite to
# each other so we will maintain a difference
# of 180 degrees between then
degree_2 = degree+180
# degree will be always between 0 and 360
if degree > 180:
degree_2 = degree-180
# x_planet is x coordinate
x_planet_2 = int(math.cos(degree_2 * 2 * math.pi/360)
* X_ellipse) + X_center
# y_planet is y coordinate
y_planet_2 = int(math.sin(degree_2 * 2 * math.pi/360)
* Y_ellipse) + Y_center
# draw circle in center of screen
pygame.draw.circle(surface=screen, color=red, center=[
X_center, Y_center], radius=60)
# draw ellipse
# Coordinate of left topmost point is (100,75)
# width of ellipse = 2*(major radius of ellipse)
# height of ellipse = 2*(minor radius of ellipse)
pygame.draw.ellipse(surface=screen, color=green,
rect=[100, 75, 800, 450],
width=1)
# draw both planets
# x_planet_1, y_planet_1, x_planet_2
# and y_planet_2 are calculated above
pygame.draw.circle(surface=screen, color=blue, center=[
x_planet_1, y_planet_1], radius=40)
pygame.draw.circle(surface=screen, color=cyan, center=[
x_planet_2, y_planet_2], radius=40)
# Frame Per Second /Refresh Rate
clock.tick(5)
# update screen
pygame.display.flip()
PROGRAM-14: SIM ULATE BOUNCING BALL USING
PYGAME
import pygame
# initialize pygame
pygame.init()
# define width of screen
width = 1000
# define height of screen
height = 600
screen_res = (width, height)
pygame.display.set_caption("GFG Bouncing game")
screen = pygame.display.set_mode(screen_res)
# define colors
red = (255, 0, 0)
black = (0, 0, 0)
# define ball
ball_obj = pygame.draw.circle(
surface=screen, color=red, center=[100, 100], radius=40)
# define speed of ball
# speed = [X direction speed, Y direction speed]
speed = [1, 1]
# game loop
while True:
# event loop
for event in pygame.event.get():
# check if a user wants to exit the game or not
if event.type == pygame.QUIT:
exit()
# fill black color on screen
screen.fill(black)
# move the ball
# Let center of the ball is (100,100) and the speed is (1,1)
ball_obj = ball_obj.move(speed)
# Now center of the ball is (101,101)
# In this way our wall will move
# if ball goes out of screen then change direction of movement
if ball_obj.left <= 0 or ball_obj.right >= width:
speed[0] = -speed[0]
if ball_obj.top <= 0 or ball_obj.bottom >= height:
speed[1] = -speed[1]
# draw ball at new centers that are obtained after moving ball_obj
pygame.draw.circle(surface=screen, color=red,
center=ball_obj.center, radius=40)
# update screen
pygame.display.flip()