写一个函数实现输出 1 -- n 之间的所有可逆素数

//方法1:
#include <stdio.h>
void ng_ss(int n);
int pd_ss(int n);
int sz_dd(int n);
int main(void)
{
 int t;
 printf("请输入大于1的整数n:");
 scanf("%d",&t);
 ng_ss(t);
 printf("\n");
 return 0;
}

void ng_ss(int n)
{
  int i,sum = 0,flath = 0;
  printf("可逆素数如下:\n");
  for(i = 2;i <= n;i++)
  {
     sum = pd_ss(i);
     if(sum == 1)
     {
        flath = sz_dd(i);
        sum = pd_ss(flath);
        if(sum == 1)
        {
          printf(" %d ",i);
        }

     }
  }
}
int pd_ss(int n)
{
  int i;
  for(i = 2;i < n;i++)
  {
        if(n % i == 0)
        {
          return 0;
        }
  }
  return 1;

}
int sz_dd(int n)
{
      int sum = 0,m = 0;
      while(n > 0)
      {
          m = n % 10;
          n = n / 10;
          sum = sum*10 + m;
      }
      return sum;
}
#include <stdio.h>

void sc_knss(int n);

int main(void)
{
 int t;
 printf("请输入大于1的整数n:");
 scanf("%d",&t);
 printf("可逆素数如下:\n");
 sc_knss(t);
 printf("\n");
 return 0;
}

void sc_knss(int n)
{
  int i,j,k,s = 0,m = 0,sum = 0;//这些变量放在栈区
  for(i = 2;i <= n;i++)   
  {
      for(j = 2;j <= i;j++)
      {
        if(i % j == 0)
        {
           if(i == j)
           {
             s = i;
             while(s > 0)
             {
               m = s % 10;
               s = s / 10; 
               sum = sum * 10 + m;
             }
             for(k = 2;k <= sum ;k++)
             {
                if(sum % k == 0)
                {
                   if(sum == k)
                   {
                     printf(" %d ",i);
                       sum = 0;

                   }
                   else
                   {
                      sum = 0;
                      break;
                   }
                }
             }
           }
           else
           {
             break;

           }

        }
      }  
  }
  printf("\n");
}

猜你喜欢

转载自blog.csdn.net/qq_28445515/article/details/81285613