import math
def bald(a):
    t=3
    e=int(math.sqrt(b+d))+1
    while(t<=e):
        for x in range(t*2, b+d, t):
            h=x in c
            if(h==True):
                c.remove(x)
        t=t+2
    return(c)
#questa funzione svolge un lavoro fondamentale: partendo da 3, scorre tutti i multipli di un numero e li toglie 
#dalla lista, questi infatti sono sicuramente numeri non primi, dopo il 3 procede con il successivo numero
#dispari fino alla radice quadrata del valore più grande presente nel gruppo

while True:
    a=int(input('inserisci fino a che numero vuoi sapere quanti sono i numeri primi'))
    b=int(input('inserisci a gruppi di quanti numeri vuoi vedere i numeri primi'))
    c=[2]
#chiamo la lista con i numeri primi "c" e vi inserisco il 2
    
    if(b==1):
        c.remove(2)
#in questo modo se si fanno dei gruppi da 1 viene tolot il numero 2 da "c"
        
    g=a//b
#in questo modo si scoprono quanti gruppi ci sono
    
    d=1
    f=1
    while(f<=g):
        if(b==1 and d==2):
            c.append(2)
#qui abbiamo messo il 2 nel secondo gruppo nel caso i gruppi fossero da 1
            
        if(d%2==1):
            for i in range(d, b+d, 2):
                c.append(i)
                r=1 in c
                if(r==True):
                    c.remove(1)
#con questo gruppo abbiamo messo dentro alla lista "c" tutti i numeri dispari compresi nel gruppo se i gruppi sono
#formati da un numero dispari di numeri
                    
        else:
            for i in range(d+1, b+d, 2):
                c.append(i)
                r=1 in c
                if(r==True):
                    c.remove(1)
#con questo gruppo abbiamo messo dentro alla lista "c" tutti i numeri dispari compresi nel gruppo se i gruppi sono
#formati da un numero pari di numeri
                    
        m=bald(a)
#qui richiamiamo al lavoro svolto dalla funzione
        
        n=len(m)
        perc=(n/b)*100
        print('i numeri primi tra', d, 'e', b+d-1,'sono', n, ', con una concentrazione del', perc, '%, e sono', m)
        d=d+b
        f=f+1
        c=[]
        h=[]
#questi ultimi 4 comandi servono per resettare la lista "c" e per passare al gruppo successivo
