• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Szukanie liczb pierwszych z przedziału <100;1000>

+1 głos
9,518 wizyt
pytanie zadane 9 czerwca 2020 w C i C++ przez Cincin Nowicjusz (240 p.)

Mam problem z zadaniem którego treść brzmi:

Napisz program, który wypisuje wszystkie liczby pierwsze z przedziału , w których występuje choć jedna cyfra 1 lub 3, ale ani razu nie występuje 2 lub 4. W momencie zakończenia pracy programu wszystkie liczby mają być widoczne na ekranie.

Tak jak z wszystkimi poprzednimi zadaniami sobie radziłem, tak to jest dla mnie czarną magią. Poniżej mam sito na liczby pierwsze, które MUSI BYĆ W TYM ZADANIU, jeśli ma być ono zaliczone(oczywiście trochę można w nim zmienić na rzecz rozwiązania zadania). Za wszystkie odpowiedzi i komentarze z góry bardzo dziękuje :D .

#include <stdio.h>
#include <iostream>
#include <string.h>
#include <math.h>

using namespace std;

int main(){
	
int i,j, g, n;	

	
	int *tab = new int[n];
	
	for(i=0; i!=n; i++)
		{
			tab[i]=i;
		}
		
		g=floor(sqrt(n));
		
		printf("\n----granica = %d \n", g);
		
		for(i=2; i<g+1; i++)
			{
			if(tab[i]!=0)
					{
						j=i+i;
						while(j<=k)
						{
							tab[j]=0;
							j=j+i;
							}
						}
				}
	printf("\n Liczby piwerwsze to: ");
	for (i=2; i<=n; i++)
		{
			if(tab[i]!=0) printf("%d ", i);
			
			}
			printf("\n");
	return 0;
}

 

 

2 odpowiedzi

0 głosów
odpowiedź 9 czerwca 2020 przez Pierożek Nowicjusz (140 p.)

Zamiast robić tablice intów, możesz zrobić tablice bool i wykreślać wszystkie liczby złożone. Następnie funkcje bool, która będzie sprawdzać czy w liczbie występuje 1 lub 3, a nie 2 i 4. 

#include <iostream>
#include <stdio.h>
using namespace std;

bool sprawdzanie_cyfr(int liczba)
{
    bool k=false;
    while(liczba!=0)
    {
        if((liczba%10==2)||(liczba%10==4))
        {
            return false;
        }
        else if((liczba%10==1)||(liczba%10==3))
        {
            k = true;
        }
        liczba/=10;
    }
    return k;
}

int main()
{
    bool sito[1000];

    for(int i=2;i<=1000;i++)
    {
        if(sito[i])
        {
            for(int j=i*i;j<=1000;j=j+i)
            {
                sito[j]=1;
            }
        }
    }

    for(int i=100;i<1000;i++)
    {
        if(sito[i]==0)
        {
            bool p_czy_f = sprawdzanie_cyfr(i);
            if(p_czy_f==true)
            {
                printf("%d ",i);
            }
        }
    }

    return 0;
}

 

–2 głosów
odpowiedź 9 marca 2021 przez skar15 Początkujący (330 p.)
Liczby pierwsze to te których nie ma w tabliczce mnożenia
komentarz 9 marca 2021 przez Whiskey_Taster Pasjonat (15,460 p.)
A to co za śmieszna definicja? Liczby 2000 też nie ma w standardowej (szkolnej) tabliczce mnożenia, a jednak pierwsza nie jest.

Podobne pytania

0 głosów
1 odpowiedź 451 wizyt
0 głosów
1 odpowiedź 4,240 wizyt
pytanie zadane 3 listopada 2018 w C# przez aXen Początkujący (390 p.)
0 głosów
1 odpowiedź 2,499 wizyt

89,693 zapytań

138,297 odpowiedzi

309,243 komentarzy

59,623 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Sklep oferujący ćwiczenia JavaScript, PHP, rozmowy rekrutacyjne dla programistów i inne materiały

Oto dwie polecane książki warte uwagi. Pełną listę znajdziesz tutaj.

...