Obliczanie ilości liczb naturalnych z trzema dzielnikami

0

Witam,
Dzisiaj postanowiłem dla treningu napisać program w c++ rozwiązujący owe zadanie:

Oblicz ile liczb naturalnych mniejszych od stu ma dokładnie 3 dzielniki.

Napisałem kod na miarę moich możliwości. Wydawało mi się, iż jest napisany poprawnie, ale po skompilowaniu i uruchomieniu, program wypisuje wszystkie liczby rozpatrywane przez program, a nie tylko te które mają dokladnie 3 dzielniki. Za każdą radę i pomoc byłbym bardzo wzdzięczny.

Kod:

#include <iostream>
#include <cstdio>
#include <stdio.h>

using namespace std;
int main()

{
int liczba, dzielnik, liczbadzielnikow;
liczba=1;
dzielnik=1;
liczbadzielnikow=0;
cout << "Liczby mniejsze od stu z 3 dzielnikami: \n\n";
while (liczba<100)
	{

	while(liczbadzielnikow<=3 && dzielnik <= liczba)
		{
		if (liczba%dzielnik == 0)
			{liczbadzielnikow++;
			}
		dzielnik++;
		}
		if (liczbadzielnikow=3)
			{
			cout << liczba;
			cout << "\n";
			}
	liczbadzielnikow =0;
	dzielnik =1;
	liczba++;
	}
}
0
if (liczbadzielnikow==3)
                        {
                        cout << liczba;
                        cout << "\n";
                        }

Do porownywania sluzy operator '=='.

0

Na chłopski rozum...

n jest zawsze dzielone przez 1 i n - to już są dwa dzielnik. Pozostaje trzeci dzielnik. n = a*b, ale jeśli a != b, to mamy co najmniej cztery dzielniki. Wniosek z tego, żę n = a2 i a musi być pierwsze (inaczej byłby co najmniej czwarty dzielnik). Wychodzi na to że liczby z trzema dzielnikami, to 22, 32, 52, 7^2.

0

Coś się... z indeksami. Chodzi o kwadraty liczb 2, 3, 5, 7 czyli liczb pierwszych mniejszych od 10 (bo 11*11 > 100).

0

Kiedyś gdzieś dawno temu wdziałem to zadanie w oryginale. Chodzi w nim o iloczyn wszystkich trójek z liczb 2,3,5,7, czyli chodzi o 4 liczby 235, 257, 237, 357

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