美素数
小M对数的研究比较热爱,一谈到数,脑子里就涌现出好多数的问题,今天,小M想考考你对素数的认识。
问题是这样的:一个十进制数,如果是素数,而且它的各位数字和也是素数,则称之为“美素数”,如29,本身是素数,而且2+9 = 11也是素数,所以它是美素数。
给定一个区间,你能计算出这个区间内有多少个美素数吗?
【输入说明】
在程序当前路径下存在文本文件execute.stdin,程序从execute.stdin中读取输入数据。
execute.stdin为单行,存放着空格隔开的两个数字L和R,并且 1<= L <= R <= 1000000,分别表示数字区间的左值和右值。
【输出说明】
输出区间内(包括端点值L,R)美素数的个数。
【示例】
输入: 1 100
输出: 14
1.用fseek用fscanf读入ab
2.先判断是不是素数
3.
while (x > 0) {
s = s + x % 10;
x = x / 10;
}
用于判断和是不是素数
#include <stdio.h>
#include <stdlib.h>
int main()
{
FILE *fin;
char filename[] = "execute.stdin";
fin = fopen(filename, "r+");
int a;
fscanf(fin,"%d", &a);
fseek(fin, 1, 1);
int b;
fscanf(fin,"%d", &b);
//fclose(fin);
int sum = 0;
int i = 2;
for (; a <= b; a++)
{
int flag = 1;
if (a < 2)
flag = 0;
for (i=2; i < a; i++) {
if (a%i == 0) {
flag = 0;
break;
}
}
if (flag == 1) {
int x = a;
int s = 0;
while (x > 0) {
s = s + x % 10;
x = x / 10;
}
for (i = 2; i < s; i++) {
if (s%i == 0) {
flag = 0;
break;
}
}
}
if (flag == 1)
sum++;
}
printf("%d", sum);
return 0;
}