Wątek przeniesiony 2017-07-06 09:52 z C/C++ przez Patryk27.

Wypisanie liczb pierwszych od 0 do podanej przez użytkownika liczby

0
    int liczba;
    bool flag;
    cout<<"podaj liczbe"<<endl;
    cin>>liczba;

    for(int i=liczba; i>1; i--)
    {
        flag=false;
        for(int j=liczba-1; j>1; j--)
        {
            if(i%j==0)
            {
                flag=true;
                break;
            }

        }
        if(flag==false)
        {
            cout<<i<<endl;
        }

    }
    cout<<"2"<<endl;

Napisałem taki kod i nie wiem co jest źle proszę o pomoc ;)

1

To w końcu od czy do zera?
I co to znaczy, że coś jest źle?

3

Na przykład for(int j=liczba-1; j>1; j--) nie ma sensu, bo przecież liczby które chcesz testować to i a nie liczba-1,
Poza tym mało co w tym kodzie jest zrobione sensownie. Normalny człowiek zrobiłby sobie tam sito do n po prostu.

0
Patryk27 napisał(a):

To w końcu od czy do zera?
I co to znaczy, że coś jest źle?

  1. Do zera
  2. Program nie wypisuje liczb
0
Shalom napisał(a):

Na przykład for(int j=liczba-1; j>1; j--) nie ma sensu, bo przecież liczby które chcesz testować to i a nie liczba-1,
Poza tym mało co w tym kodzie jest zrobione sensownie. Normalny człowiek zrobiłby sobie tam sito do n po prostu.

Czyli wystarczy zamienić "liczba" na "i".

Dzięki wielkie ;)

0

W ten sposob moze lepiej

#include <iostream>
#include <string>
#include <math.h>
#include <vector>
using namespace std;
int main()
{
    int max;
    vector<int> primes;
    bool is_prime;
    
    
    cout<<"Podaj maksymalny zakres sprawdzania: ";
    cin>>max;
    cout<<endl;
    
    for (int i=2; i<=max; i++)
    {
        is_prime = true;
        
        for (int a=2; a<=sqrt(i); a++)
        {
            if (i%a == 0)
            {
                is_prime = false;
                break;
            }
        }
        
        if(is_prime)
            primes.push_back(i);
    }
    
    for (int prime : primes)
    {
        cout<<prime<<", ";
    }

    return 0;
}

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