Выяснить сколько простых чисел находится в интервале

Тлеу

14. Выяснить сколько простых чисел находится в интервале [n ,m], и распечатать их. Для определения, является ли очередное число простым, составить функцию.
10 ответов

Тлеу

Тлеу, лови. Что-то вроде вот этого:
//---------------------------------------------------------------------------
#include <vcl>
#include <iostream>
#include <conio>
using namespace std;
 
bool prov (int a, int b, int x);
 
main ()
{
 system ("title Proverka chisla");
 int a, b, x;
 prov (a, b, x);
 cout <<endl;
 system ("pause");
}
//---------------------------------------------------------------------------
 
bool prov (int a, int b, int x)
{
 int check=1;
 cout <<"Vvedite granizy intervala [a, b].\na=";
 cin >>a;
 cout <<"b=";
 cin >>b;
 if (a>=b) {cout <<"Oshibka! a>=b."; return 0;}
 cout <<"Vvedite chislo: ";
 cin >>x;
 if (x>b || x<a) {cout <<x<<" ne lezhit vnutri ["<<a<<", "<<b<<"]."; return 0;}
 
 for(int i=2; i<x; i++)
 {
  if(div(x, i).rem!=0){check=0; break;}
 }//for.
 if (!check) cout <<"Prostoe."; else cout<<"Neprostoe.";
 return check;
}
Частично взято отсюда


Тлеу

Тлеу,
#include <iostream>
 
bool IsSimpleNumber(int n)
{
  if(n < 2)
    return false;
 
  for(int i = 2; i * i <= n; ++i)
    if(n % i == 0)
      return false;
 
  return true;
}
 
int main()
{
  int n;
 
  std::cout << "n = ";
  std::cin >> n;
 
  int m;
 
  std::cout << "n = ";
  std::cin >> m;
 
  for(int i = n; i < m; ++i)
    if(IsSimpleNumber(i))
      std::cout << i << " ";
 
  std::cout << std::endl;
 
  return 0;
}


Тлеу

#include <stdio.h>
#include <conio.h>
 
bool easy_num(int number);
 
int main()
{
    unsigned int n, m, kol = 0;
 
    printf("\nInput n, m: ");
    scanf("%d%d", &n, &m);
    if (n < m)
    {
        for (int i = n; i <= m; i++)
            if (easy_num(i))
            {
                printf("%d ", i);
                kol++;
            }
 
        printf("\nKol: %d", kol);
    }
    else
        printf("\nError. Input other n and m.");
    
    getch();
    return 0;
}
 
bool easy_num(int number)
{
    for (int i = 2; i <= number / 2; i++)
        if (number % i == 0)
            return false;
 
    return true;    
}


Тлеу

Тлеу, извини, друг, ни туда отправил. Моя программа выясняет, простое ли число.


Тлеу

nameless, теперь попробуй вызвать функцию easy_num передав ей число меньшее 2 (т.е. заведомо не простое) - результат всегда будет true.


Тлеу

#include <iostream>
 
bool IsSimpleNumber(int n)// ТУТ ВЫДАЕТ ERROR
{
  if(n < 2)
    return false;
 
  for(int i = 2; i * i <= n; ++i)
    if(n % i == 0)
      return false;
 
  return true;
}
 
int main()
{
  int n;
 
  std::cout << "n = ";
  std::cin >> n;
 
  int m;
 
  std::cout << "n = ";
  std::cin >> m;
 
  for(int i = n; i < m; ++i)
    if(IsSimpleNumber(i))
      std::cout << i << " ";
 
  std::cout << std::endl;
 
  return 0;
}
Declaration syntax error в 3 строчке что может быть не так???


Тлеу

Declaration syntax error в 3 строчке что может быть не так???
Какой IDE пользуетесь?


Тлеу

Какой IDE пользуетесь?
Borland C++ version 3.1


Тлеу

Borland C++ version 3.1
Если не ошыбаюсь, там нет булевского типа. Попробуй так
int IsSimpleNumber(int n)// ТУТ ВЫДАЕТ ERROR
{
  if(n < 2)
    return 0;
 
  for(int i = 2; i * i <= n; ++i)
    if(n % i == 0)
      return 0;
 
  return 1;
}
#include
#include <iostream.h>
Может на Си надо
#include <stdio.h>
#include <conio.h>
 
int is_simple(int x)
{
        int i;
        if(x<2 && x>=0)
           {
                return 0;
           }
         for(i=2; i<=x/2; i++)
         {
                 if(!(x%i))
                 {
                         return 0;
                 }
         }
  return 1;
}
int main()
 {
   int a,n,i;
   printf("Enter a -> ");
   scanf("%d",&a);
   printf("Enter n -> ");
   scanf("%d",&n);
   printf("Result is -> ");
    for(i=a; i<n; i++)
        {
                if(is_simple(i))
                {
                        printf("%d ",i);
                }
        }
   getch();
   return 0;
}


Тлеу

int IsSimpleNumber(int n)
{
  if(n < 2)
    return 0;
 
  for(int i = 2; i * i <= n; ++i)
    if(n % i == 0)
      return 0;
 
  return 1;
}
Большое Спасибо!!!! помогло это!!!