15-110 PA4 Sample Solutions - Spring 2018 1. from sieve import sieve def factor(n): dividend = n primelist = sieve(n) possible_factor = primelist[0] primelist.remove(possible_factor) factors = [] while dividend != 1: if (dividend % possible_factor == 0): factors.append(possible_factor) dividend = dividend // possible_factor else: possible_factor = primelist[0] primelist.remove(possible_factor) return factors 2. def mean(numlist): n = len(numlist) sum = 0 for x in numlist: sum = sum + 1/x result = n/sum return round(result, 3) 3. def min_index(datalist): # list is assumed to be non-empty min = datalist[0] min_index = 0 for i in range(1, len(datalist)): if datalist[i] < min: min = datalist[i] min_index = i return min_index # instead of min 4. def swap(datalist, i, j): temp = datalist[i] datalist[i] = datalist[j] datalist[j] = temp return None from swap import swap def bubble_sort(datalist): n = len(datalist) for scan in range(n-1): for index in range(0,n-1): if datalist[index] > datalist[index+1]: swap(datalist, index, index+1) return None