编程练习场————美素数

美素数

小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;
}

猜你喜欢

转载自blog.csdn.net/Whiteleaf3er/article/details/81780270
今日推荐