Purtroppo la logica da usare per calcolare il periodo non è immediata, io stesso ci ho messo circa il 70% del tempo in cui ho scritto l'intero programma. L'approccio di che hai inizialmente è corretto, cioè vedere se esso è uno dei divisori del numero di versi della poesia (ovvero la lunghezza della lista della prosodia).
A quel punto devi verificare (partendo dal più basso perché ti serve lo schema minimo) quale di questi è un periodo valido, ovvero se il primo gruppo di lunghezza uguale al periodo è ripetuto all'interno della prosodia.
Per fare questa verifica ti basta confrontare il primo gruppo con uno alla volta tutti i gruppi seguenti dove avrai ricalcolato la prosodia a partire da 0 (se no lo schema sarà lo stesso ma i valori diversi). Ad esempio se lo schema prosodico è [0,1,1,0,2,3,3,2] e stai verificando il periodo uguale a 4 allora avrai il primo gruppo uguale a [0,1,1,0] e l'unico altro gruppo da confrontare uguale a [2,3,3,2]. Calcolando nuovamente la prosodia del secondo gruppo tornerà la lista [0,1,1,0] che per l'appunto uguale allo schema base, quindi il periodo 4 è valido.
Appena trovi un gruppo diverso dal primo saprai che quel periodo non è valido e dovrai passare al successivo, se invece sono tutti uguali al primo saprai che quel periodo è corretto.