Liczby Filza - program C/C++

0

Witam
Chcę napisać program znajdujący trzycyfrowe liczby Filza np.144 =(1+4+4)*1*4*4. Chcę znaleźć liczby Filza mniejsze od 100 000. Podpowie mi ktoś co dalej miałbym zrobić, chyba że mam źle, to w jaki sposób. Aktualnie mam coś takiego:

#include <iostream>

using namespace std;

int x,y,suma=0;

int main()
{
	for(x=100;x<10000;x++)
	{
		while(x>0)
		{
			y=x%10;
			x=x/10;
			suma=suma+y;
		}
	}
	
	return 0;
}

Pozdrawiam

2

Musisz policzyć sumę i iloczyn cyfr w liczbie. Sumę już masz, iloczyn robi się analogicznie. Potem tylko prosty warunek, czy iloczyn tych dwóch zmiennych jest tą liczbą.

Oprócz tego, zauważ, że w pętli for iterujesz przy użyciu x po czym wewnątrz tej pętli modyfikujesz wartość tej zmiennej(x=x/10), przez co po każdym obrocie pętli x będzie mieć wartość 0. Polecam zamiast x iterować po innej zmiennej np. i, a potem na samym początku przypisywać pod x to i dzięki czemu unikniesz tego problemu.

I tak na marginesie jak deklarujesz zmienną suma globalnie, to jej domyślna wartość to 0 - nie trzeba do niej nic przypisywać.

1

Już Wiesz, tylko poskładać do kupy:)

    int s = 0,  p = 1, y = 0, tmp = 0;
    for(int x = 10; x < 10000; x++)
    {   
        tmp = x;
        while(tmp > 0)
        {
            y = tmp % 10;
            s += y;
            p *= y;
            tmp /= 10;
        }
        if (x == s * p)
        {
              cout << x<<"\n";
        }
        s = 0;
        p = 1;
    }
1

Jak szukasz 3-cyfrowych to możesz na "sztywno":
screenshot-20201122201653.png

0

Super, dzięki wielkie! :)

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