C语言求前100个无暇素数

C语言求前100个无暇素数程序
2025-01-05 12:03:30
推荐回答(2个)
回答1:

根据无暇素数的概念:
一个两位整数 A 本身是素数,若将其个位数字与十位数字交换,得到一个新的两位数 B, 而 B 也是素数,我们则称 A 为无暇素数。


我们得出,无暇素数为两位数。

#include 
#include 

int sushu(const int *n);
int wanmei(const int *n);

int main(void)
{
    for(int i = 11; i < 100; ++i)
        if(sushu(&i) && wanmei(&i))
            printf("%-4d", i);
            
    putchar('\n');
    return 0;
}

int sushu(const int *n)  //判断是否为素数,使用指针加快程序速度; 
{
    int temp = sqrt(*n);  //开方减少计算量(素数定理); 
    
    for(int i = 2; i <= temp; ++i)
        if(*n % i == 0)
            return 0;
    
    return 1;
}

int wanmei(const int *n)  //判断反过来是否为素数,使用指针加快程序速度; 
{
    int temp = *n / 10 + *n % 10 * 10;
    
    if(sushu(&temp)) 
        return 1;
        
    else
        return 0;
}

回答2: