美文网首页
c语言计算可逆素数

c语言计算可逆素数

作者: 一路向后 | 来源:发表于2021-11-21 20:32 被阅读0次

1.问题描述

请从小到大输出所有4位数的可逆素数.
可逆素数指: 一个素数将其各位数字的顺序倒过来构成的反序数也是素数.

2.源码实现

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

/*求反序数*/
int inverse(int a)
{
    char b[10];
    int n = 0;
    int c = 0;
    int i = 0;

    memset(b, 0x00, sizeof(b));

    while(a > 0)
    {
        b[i] = a % 10;
        a /= 10;
        i++;
    }

    n = i;

    for(i=0; i<n; i++)
    {
        c = 10 * c + b[i];
    }

    return c;
}

/*求平方根*/
int isqrt(int a)
{
    int i;

    if(a == 1)
    {
        return 1;
    }

    for(i=1; i<a; i++)
    {
        if(i*i > a)
        {
            break;
        }
    }

    return i-1;
}

/*判断是否为质数*/
short isPrime(int a)
{
    int u;
    int i;

    if(a == 1)
    {
        return 0;
    }

    u = isqrt(a);

    for(i=2; i<=u; i++)
    {
        if(a % i == 0)
        {
            return 0;
        }
    }

    return 1;
}

int main()
{
    int n = 10000;
    int i = 0;
    int j = 1;

    for(i=1000; i<n; i++)
    {
        if(isPrime(i) && isPrime(inverse(i)))
        {
            if(j % 10 == 0)
            {
                printf("%d\n", i);
            }
            else
            {
                printf("%d ", i);
            }

            j++;
        }
    }

    if(j % 10 != 0)
    {
        printf("\n");
    }

    return 0;
}

3.编译源码

$ gcc -o test test.c -std=c89

4.运行及其结果

$ ./test
1009 1021 1031 1033 1061 1069 1091 1097 1103 1109
1151 1153 1181 1193 1201 1213 1217 1223 1229 1231
1237 1249 1259 1279 1283 1301 1321 1381 1399 1409
1429 1439 1453 1471 1487 1499 1511 1523 1559 1583
1597 1601 1619 1657 1669 1723 1733 1741 1753 1789
1811 1831 1847 1867 1879 1901 1913 1933 1949 1979
3011 3019 3023 3049 3067 3083 3089 3109 3121 3163
3169 3191 3203 3221 3251 3257 3271 3299 3301 3319
3343 3347 3359 3371 3373 3389 3391 3407 3433 3463
3467 3469 3511 3527 3541 3571 3583 3613 3643 3697
3719 3733 3767 3803 3821 3851 3853 3889 3911 3917
3929 7027 7043 7057 7121 7177 7187 7193 7207 7219
7229 7253 7297 7321 7349 7433 7457 7459 7481 7507
7523 7529 7547 7561 7577 7589 7603 7643 7649 7673
7681 7687 7699 7717 7757 7817 7841 7867 7879 7901
7927 7949 7951 7963 9001 9011 9013 9029 9041 9103
9127 9133 9161 9173 9209 9221 9227 9241 9257 9293
9341 9349 9403 9421 9437 9439 9467 9479 9491 9497
9521 9533 9547 9551 9601 9613 9643 9661 9679 9721
9749 9769 9781 9787 9791 9803 9833 9857 9871 9883
9923 9931 9941 9967 

相关文章

  • c语言计算可逆素数

    1.问题描述 请从小到大输出所有4位数的可逆素数.可逆素数指: 一个素数将其各位数字的顺序倒过来构成的反序数也是素...

  • C语言 计算100以内的素数

    结果如下:

  • 自学Python:寻找可逆素数

    可逆素数是什么? 可逆素数是指一个素数将其各位数字的顺序倒过来构成的反序数也是素数。 请从小到大输出所有4位数的可...

  • c语言求素数

  • C语言统计素数

    源码如下: 运行结果: 注意 素数,又称质数,即整数在一个大于1的自然数中,除了1和此整数自身外,没法被其他自然数...

  • C语言素数的判断

    Q:什么是素数?A:质数又称素数。一个大于1的自然数,除了1和它自身外,不能被其他自然数整除的数叫做质数。(由此可...

  • c语言求回文素数

    1.问题描述 所谓回文素数指的是,对一个整数n从左向右和从右向左读都相同,且n为素数.求所有不超过1000的回文素...

  • 9.1.1-一维数组声明

    (1)元素数据类型[] 数组变量名; (2)元素数据类型 数组变量名[]; (这种往往为C语言准备的)

  • C++11 模板元编程 - 后记

    当1994年,Erwin Unruh在C++标准委员会上演示了通过C++模板在编译期计算素数的程序后,C++模板元...

  • 计算机组成原理-02-相关背景(二)

    计算机的编程语言 翻译型语言:C/C++、Objective-C、Golang 解释型语言:Python、Php、...

网友评论

      本文标题:c语言计算可逆素数

      本文链接:https://www.haomeiwen.com/subject/itvmtrtx.html