电脑网络

C语言设计一个程序

346 浏览

C语言设计一个程序

1 个回答

Nathanjobby用户头像
Nathanjobby 回答于 2024-07-20
已采纳

提问:C语言设计一个程序

设计一个程序,读取用户输入的一个整数N(N >1000, N < 10000000),输出与其最接近的一个幸运素数(1000以上且只有一位数字与其它位不同的素数,参见下页),如用户输入2017,程序输出1999

网友回答:

完整的程序参考,这个主要考核算法

#include <stdio.h>

#include <math.h>

int lpri(int n)  //判是否为幸运素数

{

    int i,x,olda1,olda2,a,ct1,ct2;

 

    if(n<1000) //1000以下不是 

       return 0; 

 

    x=n;

    olda1=n%10;

    ct1=1;

    ct2=0;

    while(n) //判断位数上的数

        {

            a=n%10;

            if (a==olda1)

                ct1++;

            else

                {

                    if (ct2==0)

                        {

                            olda2=a;

                            ct2=1;

                        }

                    else

                        {

                            if (a==olda2)

                                ct2++;

                            else

                                return 0;

                        }

                }

            n/=10;

        } //以上判只有两个数,且计算分别的计数 

    if (ct1!=1 && ct2!=1) //有一计数必为1 

        return 0;

    //以下判素数 

    for (i=2; i<=(int)sqrt(x); i++)

        if (x%i==0) return 0;

    if (i>1) return 1;

    else return 0;

}

int main()

{

    int a,t,r;

    scanf("%d",&a);

    t=a;

    while(t-->1000)  //向下找 ,可能没有 

          if (lpri(t))

             break;

    r=t;

    t=a;

    while(t++) 

    {

         if (lpri(t))

             break;

    }

    if (r==999 || a-r>t-a)   ///r=999表示向下没有 

       printf("%d\n",t);

    else

       printf("%d\n",r);

 

    return 0;

}

例样测试正确 

我来回答

相关问题