Funkcja na liczby pierwsze

0

Witam. Muszę napisać program wyświetlający wszystkie liczby pierwsze z danego przedziału. Funkcja ma zwrócić wartość 1 jeżeli a jest l. pierwsza, jeśli nie 0. Ujemnych nie bierzemy pod uwagę. Siedzę już przy tym dłuższy czas i nie rozumiem, czas leci, a mam jeszcze inne programy do napisania. Proszę o jakieś nakierowanie. Z góry dziękuję :)

Mam taki kod. Był trochę dłuższy, ale usunąłem to co wydawało mi się totalnie bez sensu xd

#include <stdio.h>

int czy_pierwsza(int a)
{
	int x1,x2;
	for(int i=x1; i<=x2; i++)
	{
		for(i=2;i<a;i++)
		{
			if(a%i==0)
				return 1;
			else
				return 0;
		}
	}
	return a;
}

int main()
{
	int x1, x2, a, funkcja;
	puts("Podaj przedzial liczbowy");
	do{
	scanf("%d", &x1);
	if(x1<=0)
		puts("Liczba musi byc dodatnia i rozna od zera");		
	scanf("%d", &x2);
	if(x2<2)
		puts("Brak liczb pierwszych. Podaj inna liczbe.");
	}while(x1<=0 || x2<2);
	funkcja = a;
	printf("%d", a);
	return 0;
}
1

Masz funkcje a jej nie wywołujesz. Chodzi mi o tą funkcje "czy_pierwsza". Powinno to wyglądać tak:

for(int i = początek_przedzialu; i <= koniec_przedziału; i++){
printf("%d", czy_pierwsza(i));
}

Edit: Ta funkcja "Czy_pierwsza jest źle napisana.

 int x1,x2;
    for(int i=x1; i<=x2; i++)

W zmiennych x1 i x2 są śmieci, bo nie nadajesz im wartości. Poszukaj sobie na internecie jest funkcja, która sprawdza czy liczba jest pierwsza. Wtedy będziesz mógł użyć tego pseudokodu, który napisałem wyżej :)

0

Myślałem, że wyskoczy czytelnie ;d

#include <iostream>
 
using namespace std;
 
int test, liczba;
 
int main()
{
    cin >> test;
 
    for(int i=0; i<test; i++)
    {
        cin >> liczba;
        for (int i=2; i<=liczba; i++){
            if (liczba%i==0){
                if (i==liczba) cout<<"TAK"<<endl
                else cout<<"NIE"<<endl;
                break;
            }
 
        }
 
      
    }
    return 0;
}
1
        cin >> liczba;
        for (int i=2; i<=liczba; i++){
            if (liczba%i==0){
                if (i==liczba) cout<<"TAK"<<endl
                else cout<<"NIE"<<endl;
                break;

Ten fragment Cię najbardziej interesuje.
Teraz zobacz:

  1. liczba idelnie nadaje się jako argument Twojej funkcji.
  2. Masz dwa stany wyjściowe 0 oraz 1 , czyli idealnie, żeby funkcja zwracała bool.
bool isPrime(int number){
            for (int i=2; i<=number; i++){
            if (number%i==0){
                if (i==number) return true;
                else return false;
                break;
}

Masz gotową funkcje, teraz tylko ją wywołaj w pętli, która Ci podałem.

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