~/home_Python/apple_py/prime/prime.py

INDEX Python.use(better)

》作業中です《

#! /usr/bin/env python
# coding: utf-8
## ----------------------------------------
##
## (C) Copyright 2000-2010, 小粒ちゃん《監修》小泉ひよ子とタマゴ倶楽部
##
## ----------------------------------------
# ..+....1....+....2....+....3....+....4....+....5....+....6....+....7....+....8
"""
>>> None

>>> ## ----------------------------------------
>>> None
version: #1.0.23
"""
## ----------------------------------------
## ----------------------------------------
def step00x():
    """def prime(n):"""

    def isPrime(n):
        r = False
        return r

    ## ----------------------------------------
    local = locals()
    ex_isPrime(local, 30)

## ----------------------------------------
def step01x():
    """if not n%e: break"""

    from math import sqrt
    def isPrime(n):
        r = False
        m = int(sqrt(n))
        for e in range(2, m+1):
            if not n%e: break
        else:
            r = True
        return r

    ## ----------------------------------------
    local = locals()
    ex_isPrime(local, 30)

## ----------------------------------------
def step02():
    """if n<2: return r"""

    from math import sqrt
    def isPrime(n):
        r = False
        if n<2: return r
        m = int(sqrt(n))
        for e in range(2, m+1):
            if not n%e: break
        else:
            r = True
        return r

    ## ----------------------------------------
    local = locals()
    ex_isPrime(local, 30)

## ----------------------------------------
def step03():
    """def prime(n):"""

    def prime(n):
        s = 
        for e in range(n):
            if isPrime(e):
                s.append(e)
        return s

    from math import sqrt
    def isPrime(n):
        r = False
        if n<2: return r
        m = int(sqrt(n))
        for e in range(2, m+1):
            if not n%e: break
        else:
            r = True
        return r

    ## ----------------------------------------
    local = locals()
    ex_prime(local, 30)

## ----------------------------------------
def step04():
    """all/any"""

    def prime(n):
        return [e for e in range(n) if isPrime(e)]

    from math import sqrt
    def isPrime(n):
        if n<2: return False
        return all(n%e for e in range(2, int(sqrt(n))+1))
####        return any(not n%e for e in range(2, int(sqrt(n))+1)))

    ## ----------------------------------------
    local = locals()
    ex_prime(local, 30)

## ----------------------------------------
def step05():
    """def filter(seq):"""

    from math import sqrt
    def prime(n):
        s = 
        m = int(sqrt(n))
        seq = range(2,n+1); seq = list(seq)

        e = 2
        while e<=m:
            e, seq = filter(seq)
            s.append(e)
        else:
            s += seq
        return s

    def filter(seq):
        first,rest = seq[0],seq[1:]
        s = 

        r = first, s 
        for e in rest:
            if not e%first: continue
            s.append(e)
        else:
            r = first, s
        return r

    ## ----------------------------------------
    local = locals()
    ex_prime(local, 30)
####    for e in range(30): ex_prime(local, e)

## ----------------------------------------
def step06():
    """[e for e in rest if e%first]"""

    from math import sqrt
    def prime(n):
        s = 
        m = int(sqrt(n))
        seq = range(2,n+1); seq = list(seq)

        e = 2
        while e <= m:
            e, seq = filter(seq)
            s.append(e)
        else:
            s += seq
        return s

    def filter(seq):
        first,rest = seq[0],seq[1:]
        return first, [e for e in rest if e%first]

    ## ----------------------------------------
    local = locals()
    ex_prime(local, 30)
####    for e in range(30): ex_prime(local, e)

## ----------------------------------------
## ----------------------------------------
def ex_isPrime(local, n):
    source = (
'''for e in range({0}):
    if isPrime(e): print(e,end=",")
else:
    print("#")
'''.format(n),
)
    for e in source:
        print_(e, local)

def ex_prime(local, n):
    X = 'print(prime({0}))'.format(n)
    print_(X, local, "exec")

## ----------------------------------------
def print_(source, local, mode="single"):
    print(">>>",source)
    eval(compile(source,"",mode),globals(),local)

## ========================================
s = "step"
DIR = [e for e in dir() if e.startswith(s)]
DIR = dict((i,e) for i,e in enumerate(DIR))
DIR = sorted)*1
    for k,v in DIR:
        source = '''
x = eval("%%s.__doc__"%%v)
x = (x.split("\\n")[0], x)[s]
print("%%%dd: %%s -- %%s"%%(k,v,x))
'''%n
        eval(compile(source,"","exec"))

def do_all():
    for k,v in DIR: do(k)

def do(k=None):
    if k is None: ex(); return
    if k<0: ex(True); return
    try:
        k,v = DIR[k]
        print(">>> #","-"*50,v)
        eval("%s()"%v)
    except IndexError:
        print("(x_x) too bad ... %s"%k)

## ----------------------------------------
from time import ctime
from sys import argv, version

def inform(n=60):
    print("="*n)
    print("Version: %s"%version.split("\n")[0])
    print("Module : %s"%argv[0].split("/")[-1])
    print("Date   : %s"%ctime())
    print("="*n)

## ----------------------------------------
from doctest import testmod

if __name__=='__main__':
    inform()
    testmod()

## ========================================

*1:DIR.items()))( def ex(s=False): n = len("%d"%(len(DIR)-1