初学者,C语言问题,100-999绝对素数(幻影素数)的问题

绝对素数:例如107和701都是素数,而且他们相反,所以他们是绝对素数。
我会求素数,但是不会求绝对素数,希望大神们能给予帮助啊,不甚感激,希望能在我的代码上补充就好了

 #include<stdio.h>
int main()
{
    int i,k,flag=1;
    for(i=100;i<=999;i++)
    {
        flag=1;//   notice
        for(k=2;k<i;k++)
        {
            if(i%k==0)
            {
                flag=0;
            }

        }
        if((flag==1)&&(i!=1))
        {
            printf("%d  ",i);

        }


    }

}


http://blog.csdn.net/xianfajushi/article/details/25125133

加了一个生成相反的数的一个函数

 #include<stdio.h>
#include<iostream>
using namespace std;
int reverse( int num )
{
    int temp, target;
    temp = num;
    target = 0;
    while( temp )
    {
        target = target*10 + temp % 10;
        temp /= 10;
    }
    return target;
}
int main()
{
    int i,k,flag=1;
    for(i=100;i<=999;i++)
    {
        flag=1;//   notice
        for(k=2;k<i;k++)
        {
            int i_reverse = reverse(i);//得到相反的数
            if(i%k==0||i_reverse%k==0)//同时判断是否能整除
            {
                flag=0;
            }
        }
        if((flag==1)&&(i!=1))
        {
            printf("%d  ",i);
        }
    }
    printf("\n");
}

图片说明

#include<stdio.h>
#include <math.h>

#define SWAP(a, b, t) t = (a), (a) = (b), (b) = (t);  // 交换两个数的位置

int foo1(int m);          // 计算素数  , 是返回1, 否返回0
int foo2(int m);          // 计算反序数, 是返回1, 否返回0

int main()
{
    int m, n, x;
    int t;

    scanf("%d%d", &m, &n);
    if (m > n)             // 如果第一个数大于第二个数,就交换位置 没有做<1000的判断, 需要可以加上去.
        SWAP (m, n, t);

    for (x = m; x <= n; x++)
        if (foo1(x))       // 1. 计算x是否是素数
            if (foo2(x))   // 2. 计算反序数是否是素数
            printf("%d\n", x);
    return 0;
}

int foo1(int m)
{
    int i;
    for (i = 2; i <= sqrt(m); i++)
        if (m % i == 0)
            return 0;
    return 1;
}

int foo2(int m)
{
    int x = 0, t = 0;

    while(m) {         // 求反序数
        x = m % 10;
        t = t * 10 + x;
        m = m / 10;
    }
    if (foo1(t))      // 计算反序数是否是素数.
        return 1;
    return 0;
}