C语言设计一个程序
提问:C语言设计一个程序
设计一个程序,读取用户输入的一个整数N(N >1000, N < 10000000),输出与其最接近的一个幸运素数(1000以上且只有一位数字与其它位不同的素数,参见下页),如用户输入2017,程序输出1999
网友回答:
完整的程序参考,这个主要考核算法
#include
#include
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("%dn",t);
else
printf("%dn",r);
return 0;
}
例样测试正确