кодесурса
«C ++

Упражнения на C ++: поиск круговых простых чисел до определенного предела

script1adsense2code
script1adsense3code

Числа C ++: упражнение 31 с решением

Напишите программу на C ++, чтобы найти круговые простые числа до определенного предела.

Пример решения :

Код C ++:

#include<iostream>
#include<cmath>
using namespace std;
int flg;
void chkPrime(long int n)
{
    long int i;
    i=n-1;
    while(i>=2)
    {
        if(n%i==0)
        {
            flg=1;
        }
        i--;
    }
}
void AllCombination(long int a)
{
  long int b,c,d,e,i,j,k,s,z,v,x[8],y[8],m;
  b=a;
  i=0;
  while(b>0)
  {
      y[i]=b % 10;
      b=b/10;
      i++;
  }
  c=0;
  for(j=i-1;j>=0;j--)
  {
    x[c]=y[j];
    c++;
  }
  m=i;
  while(m>0)
  {
     c=m-1;
     d=i-1;
     e=0;
     s=0;
     while(e<i)
     {
       z=pow(10,d);
       v=z*x[c%i];
       c++;
       d--;
       e++;
       s=s+v;
     }
     m--;
     chkPrime(s);
  }
}
int main()
{
    long int i=2,ctr;
	
 cout << "\n\n Find Circular Prime Numbers upto a specific limit: \n";
 cout << " ---------------------------------------------------\n";
    cout<<" Enter the upper Limit: ";
    cin>>ctr;
    cout<<"\n The Circular Prime Numbers less than "<<ctr<<" are: "<<endl;
    while(i<=ctr)
    {
      flg=0;
      AllCombination(i);
      if(flg==0)
      {
          cout<<i<<" ";
      }
      i++;
    }
	cout<<endl;
}

ИЛИ ЖЕ

Код C ++:


#include <bits/stdc++.h>
using namespace std;
 
void SieveOfSundaram (bool marked[], int);
int Rotate(int );
int countDigits(int );
 
void circularPrime(int n)
{
    int nNew = (n-2)/2;
    bool marked[nNew + 1];
    memset(marked, false, sizeof(marked));
    SieveOfSundaram(marked, nNew);
    cout << "2 " ;
    for (int i=1; i<=nNew; i++)
    {
        if (marked[i] == true)
            continue;
        int num = 2 * i + 1;
        num = Rotate(num); // function for rotation of prime
        while (num != 2*i + 1)
        {
            if (num % 2 == 0) // check for even
                break;
            if (marked[(num - 1)/2] == false)
                num = Rotate(num);
            else
                break;
        }
        if (num == (2*i + 1))
            cout << num << " ";
    }
}
 
void SieveOfSundaram(bool marked[], int nNew)
{
    for (int i=1; i<=nNew; i++)
        for (int j=i; (i + j + 2*i*j) <= nNew; j++)
            marked[i + j + 2*i*j] = true;
}
int Rotate(int n)
{
    int rem = n % 10;          // find unit place number
    rem *= pow(10, countDigits(n)); // to put unit place 
    n /= 10;                   // remove unit digit
    n += rem;                  // add first digit to rest 
    return n;
}
 
int countDigits(int n)
{
    int digit = 0;
    while (n /= 10)
        digit++;
    return digit;
}
 
int main(void)
{
    int n = 100;
    circularPrime(n);
    return 0;
}

Пример вывода:

 Найти круглые простые числа до определенного предела:                    
 -------------------------------------------------- -                   
 Введите верхний предел: 248                                            
                                                                       
 Круглые простые числа менее 248:                         
2 3 5 7 11 13 17 31 37 71 73 79 97 113 131 197 199  

Блок - схема:

«Блок-схема:
«Блок-схема:
«Блок-схема:

Редактор кода C ++:

Внесите свой код и комментарии через Disqus.

Предыдущий: Напишите программу на C ++, чтобы проверить, является ли данное число круговым простым числом или нет.
Далее: Напишите программу на C ++, чтобы проверить, является ли данное число идеальным кубом или нет.

Каков уровень сложности этого упражнения?

Новый контент: Composer: менеджер зависимостей для PHP , R программирования


script1adsense4code
script1adsense5code
disqus2code
script1adsense6code
script1adsense7code
script1adsense8code
buysellads2code