Alternating prime and square

Question:-
Write a Python function squareprime(l) that takes a nonempty list of integers and returns True if the elements of lalternate between perfect squares and prime numbers, and returns False otherwise. Note that the alternating sequence of squares and primes may begin with a square or with a prime.
Here are some examples to show how your function should work.
>>> primesquare([4])
True

>>> primesquare([4,5,16,101,64])
True

>>> primesquare([5,16,101,36,27])
False

Solution:-


import math
def prime_check(n):
    flag = 0
    for i in range(2,n-1):
        if n % i == 0:
            flag = 1
    if flag == 0:
        return True
    else:
        return False
def is_square(n):
    if math.sqrt(n) % 1 == 0:
        return True
    else:
        return False

def primesquare(l):
    flag = 0
    if len(l) == 1:
        if is_square(l[0]) or prime_check(l[0]):
            return True
        else:
            return False
    if is_square(l[0]):
        for i in range(1,len(l)):
            if i % 2 == 0:
                if not is_square(l[i]):
                    flag = 1
                    break
            elif i %2 != 0:
                if not prime_check(l[i]):
                    flag = 1
                    break
        if flag == 0:
            return True
        else:
            return False 
    elif prime_check(l[0]):
        for i in range(1,len(l)):
            if i % 2 == 0:
                if not prime_check(l[i]):
                    flag = 1
                    break
            elif i % 2 != 0:
                if not is_square(l[i]):
                    flag = 1
                    break
        if flag == 0:
            return True
        else:
            return False 
    else:
        return False
    

Comments

Popular posts from this blog

Prime partitioning a number

Rotating a list