山东理工ACM 1445 素数

素数

Time Limit: 1000MS  Memory Limit: 65536KB
Problem Description
质数又称素数,是指一个大于的自然数,除了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;
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

kunsir_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值