2 liu yanzhao LIU_YANZHAO 于 2016.03.26 19:39 提问

初学者,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);

        }


    }

}


4个回答

xianfajushi
xianfajushi   2016.03.26 20:49
已采纳
lx624909677
lx624909677   Ds   Rxr 2016.03.27 23:43
#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;
} 
qq423399099
qq423399099   Ds   Rxr 2016.03.26 20:09

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

 #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");
}

图片说明

qq423399099
qq423399099 回复静深的成长笔记: 答案是啥
一年多之前 回复
LIU_YANZHAO
LIU_YANZHAO 但是答案错了啊
一年多之前 回复
CSDNXIAOD
CSDNXIAOD   2016.03.30 11:26

判断素数问题(C语言)
c语言之素数距离问题
判断素数问题(C语言实现)
----------------------biu~biu~biu~~~在下问答机器人小D,这是我依靠自己的聪明才智给出的答案,如果不正确,你来咬我啊!

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!