Liczby naturalne podzielne przez 13 i niepodzielne przez 2

0

Witam, potrzebuję pomocy przy zadaniu.
Nie mam pojęcia jak stworzyć kod, który wypiszę tyle liczb ile wpiszę do programu.
Treść zadania to: Napisać program wypisujący na ekranie zadaną ilość (ile>0) kolejnych liczb naturalnych podzielnych przez 13 i równocześnie niepodzielnych przez 2. Użyj pętli while.
Np. Dla ile=4 powinny zostać wyświetlone liczby: 13, 39, 65, 91.

int ile, liczba, i, wynik;
           Console.Write("Wpisz liczbę: ");
           ile = Convert.ToInt32(Console.ReadLine());
           liczba = 13;
           i = 1;
           while (i <= ile)
           {
               wynik = liczba * i;
               
               if (wynik % 13 == 0 && wynik % 2 != 0 )
               {
                   Console.WriteLine(wynik);
               }
               i++;
               
           }
           Console.ReadKey();
0

Czy ty przypadkiem nie powinieneś polecieć przez wszystkie możliwe liczby i wyświetlić tylko 4, które są podzielne przez 13, a nie są przez 2? Te mnożenie mnie się nie podoba.

1

Potrzebujesz jeszcze drugi licznik - znaleziono. Kod:

int ile,liczba,i,wynik,znaleziono;
ile=4;
liczba=13;
i=1;
znaleziono=0;
while(znaleziono<ile) {
  wynik=liczba*i;
  if(wynik % 13 == 0 && wynik%2!=0) {
    Console.WriteLine(wynik);
    ++znaleziono;
  }
  ++i;
}

Update:

  • sprawdzanie czy wynik jest podzielny przez 13 nie ma sensu bo zawsze będzie skoro iterujesz co 13.
  • jeśli co druga iteracja nie ma sensu, bo liczba będzie podzielna przez 2 to lepiej dodawać 26, czyli wynik+=26
0

@Kamil Żabiński: Sprawdziłeś w ogóle czy to działa? Bo mam wrażenie, że nie

Sprawdź moje ;-)

		int ilosc = 4;
		int ileJest = 0;
		int liczba = 1;
		List<int> wynik = new List<int>();
		
		while(ilosc != ileJest)
		{
			if(liczba % 13 == 0 && liczba % 2 != 0)
			{
				ileJest++;
				wynik.Add(liczba);
			}
			liczba++;
		}
	
		foreach(int w in wynik)
		{
			Console.WriteLine(w);
		}
0
Kamil Żabiński napisał(a):

Potrzebujesz jeszcze drugi licznik - znaleziono. Kod:

int ile,liczba,i,wynik,znaleziono;
ile=4;
liczba=13;
i=1;
znaleziono=0;
while(znaleziono<ile) {
  wynik=liczba*i;
  if(wynik % 13 == 0 && wynik%2!=0) {
    Console.WriteLine(wynik);
    ++znaleziono;
  }
  ++i;
}

Update:

  • sprawdzanie czy wynik jest podzielny przez 13 nie ma sensu bo zawsze będzie skoro iterujesz co 13.
  • jeśli co druga iteracja nie ma sensu, bo liczba będzie podzielna przez 2 to lepiej dodawać 26, czyli wynik+=26

Chciałem zrobić właśnie +26, ale nie wpadłem na to, żeby po prostu dodać kolejną zmienną. W każdym razie dziękuję bardzo za pomoc.

2

To dzielenie jest przecież bez sensu.

Zaczynasz od 13 i z każdym kolejnym krokiem pętli zwiększasz o 26.

0
AdamWox napisał(a):

@Kamil Żabiński: Sprawdziłeś w ogóle czy to działa? Bo mam wrażenie, że nie

Sprawdź moje ;-)

		int ilosc = 4;
		int ileJest = 0;
		int liczba = 1;
		List<int> wynik = new List<int>();
		
		while(ilosc != ileJest)
		{
			if(liczba % 13 == 0 && liczba % 2 != 0)
			{
				ileJest++;
				wynik.Add(liczba);
			}
			liczba++;
		}
	
		foreach(int w in wynik)
		{
			Console.WriteLine(w);
		}

Dopiero od miesiąca mam C#, a nie korzystałem wcześniej z C, bądź C++, więc poziom mam podstawowy.

0

To ja też wrzucę

int ile, wynik = 13;
Console.Write("Wpisz liczbę: ");
ile = Convert.ToInt32(Console.ReadLine());

while (true)
{
    if (wynik % 13 == 0 && wynik % 2 != 0)
    {
        Console.WriteLine(wynik);
        ile--;
    }     
    if (ile == 0) break;
    wynik++;
}
            
Console.ReadKey();

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