Liczby nieparzyste ciąg

0

Hej,
Mam zrobić zadanie i coś nie do końca m i działa ciąg, pod powiedziecie co należy w kodzie poprawić?
Ciąg A000069 (Odious numbers) tworzą liczby naturalne, które w zapisie binarnym mają nieparzystą liczbę cyfr 1. W odpowiedzi na podaną liczbę naturalną n:
(1) wyznacz i wypisz n początkowych wyrazów tego ciągu
(2) sumę n początkowych wyrazów tego ciągu
Przykład n=5, ciąg=1, 2, 4, 7, 8, suma = 22

print()
n=input("Podaj liczbe naturalna n: ")
print()
print(" Wyraz A000069 (Odious numbers) z przedziału [0,...,",n,"]: ",sep="")
suma=0
for i in range(int(n)+1):
    if bin(i).count("1")%2 == 1:
        suma+=i
        print(i,end=" ")
print()
print()
print("Suma: ",suma)
print()

Wychodzi mi 1, 2,4 i suma 7 , a powinno być jak w przykładzie, co należy poprawić żeby ciąg działał prawidłowo ?

0

Bo nie Masz iterować po liczbach do n, tylko wypisac, n pierwszych wyrazów ciągu, najlepiej ująć to w funkcję, to suma będzie sumą listy wynikowej:

def odious_numbers(n):
	out = []
	cnt = 0
	while len(out) < n:
		if (bin(cnt).count("1") % 2) == 1:
			out.append(cnt)
		cnt += 1
	return out

1 użytkowników online, w tym zalogowanych: 0, gości: 1