把10到1000之间满足以下两个条件的数,存到result.txt文件中!
把10到1000之间满足以下两个条件的数,存到result.txt文件中1、是素数。
2、它的反数也是素数,如:123的反数是321。
程序代码:/*把10到1000之间满足以下两个条件的数,存到result.txt文件中!
把10到1000之间满足以下两个条件的数,存到result.txt文件中
1、是素数。
2、它的反数也是素数,如:123的反数是321。*/
#include <stdio.h>
int IsPrime(int n);
int GetAnti(int n);
int SaveResultToFile(FILE *fSave);
int main(void)
{
FILE *fSave = NULL;
fSave = fopen("result.txt", "wt"); //打开文件句柄
if (NULL == fSave)
{
printf("文件打开失败!\n");
return -1;
}
SaveResultToFile(fSave);
fclose(fSave); //关闭文件句柄
printf ("小妹妹, 完成了\n");
return 0;
}
/*
*IsPrime 判断是不是素数
*@n 要判断的数
*return 返回1, 是素数, 返回0, 不是素数
*/
int IsPrime(int n)
{
int i;
//i小于2, 或者i为偶数且不为2的, 都不是素数
if (2 == n) return 1;
if (0 == n % 2 || n < 2) return 0;
for (i = 2; i <= n / 2; ++i)
{
if (0 == n % i)
return 0;
}
return 1;
}
/*
*GetAnti 求逆数
*@n 要求逆的数
*return 返回结果
*/
int GetAnti(int n)
{
int result;
for (result = 0; n; n /= 10)
{
result = result * 10 + n % 10;
}
return result;
}
/*
*SaveResultToFile 保存结果到result.txt文件
*@fSave 文件指针
*return 成功1, 失败0
*/
int SaveResultToFile(FILE *fSave)
{
int i, j;
for (i = 10; i <= 1000; ++i)
{
if (IsPrime(i))
{
j = GetAnti(i);
if (IsPrime(j))
{
//printf("%d\n", i);
fprintf(fSave, "%d\n", i); //输出到文本
}
}
}
return 1;
}