素数
Time Limit: 1000MS
Memory Limit: 65536KB
Problem Description
质数又称素数,是指一个大于1 的自然数,除了1和此整数自身外,不能被其他自然数整除的数。对于一个给定的十进制整数,如果这个数是素数且它逆置后的整数也为素数,那么输出“True”,否则输出“False”
Input
输入包含多组测试数据。
每组数据只有一行为 1 个整数 n( |n| < 10000)。
输入 0 代表输入的结束,该组数据不做处理。
Output
对于每组测试数据,按照题目描述输出对应的结果。
Example Input
13 41 1 -3 0
Example Output
True False False False
Hint
注意题目数据范围及素数的定义。
Author
qinchuan
在程序中写了两个函数f()为判断素数的函数,f1()为把整数n逆置
#include<stdio.h>
#include<math.h>
int main()
{
int f(int);
int f1(int);
int n;
while(scanf("%d",&n)!=EOF&&n!=0)
{
if(f(n)==1&&f(f1(n))==1)
printf("True\n");
else
printf("False\n");
//printf("%d\n",f1(n));
}
return 0;
}
int f(int k)
{
int i,sk;
sk=(int)sqrt(k);
for(i=2;i<=sk;i++)
if(k%i==0)
break;
if(i>sk&&k>=2)
return 1;
return 0;
}
int f1(int k)
{
int i,j=0,s=0;
int b[10];
while(k!=0)
{
b[j++]=k%10;
k/=10;
}
for(i=0;i<j;i++)
{
s+=b[i]*pow(10,j-i-1);
}
return s;
}