东华大学 oj100——纯粹合数

问题描述 :
明明的爸爸是一位数学家,明明受他爸爸的影响从小就喜欢数学,经常向他爸爸学习或请教数学问题。
一天,明明问他爸爸什么是合数,明明的爸爸回答说:“首先,合数都是大于1的整数,其次合数是除了1和其本身外,还能被至少一个其他自然数整除的数,例如‘4’这个数,它除了能被1和4整除外,还能被2整除,因此‘4’就是合数;但是‘3’就不是合数,因为3只能被1和3这两个数整除,因此‘3’不是合数。”
聪明的明明很快就理解了他爸爸的意思,于是又接着问他爸爸:“那什么又是纯粹合数呢?”明明的爸爸接着回答说:“一个合数,去掉最高位,剩下的数是0或仍是合数;再去掉剩下的数的最高位,剩下的数还是0或合数;这样反复,一直到最后剩下的一位数仍为0或合数;我们把这样的数称为纯粹合数。
例如‘100’这个数,它能被1、2、4、5、10、20、50、100整除,因此100是个合数,我们去掉它的最高位,剩下的数是0(其实剩下的应该是00,但是前置0对一个整数来说没有意义,因此前置0被舍去,就剩下个位数上的0),因此‘100’是一个纯粹合数。有趣的是,100是最小的一个三位纯粹合数。
再例如‘104’这个数,104能被1、2、8、13、26、52、104整除,所以104是个合数;我们去掉它的最高位后剩下4,4能被1、2、4整除,所以4也是合数,所以‘104’是一个纯粹合数。
但是‘101’就不是纯粹合数,因为‘101’只能被1和101这两个数整除。”
明明对他爸爸的回答很满意,于是自己动手从100开始寻找纯粹合数,他一共找到了100个纯粹合数,调皮的明明开始反过来考爸爸了,问他爸爸能否告诉他第2个大于等于100的纯粹合数是哪个?第3个大于等于100的纯粹合数又是哪个?……明明的爸爸被这个突如其来的问题给难住了,他无法立刻回答出来,于是请求你的帮助,帮助他回答明明的这个问题。
明明的问题可以归结为:根据一个正整数n,求出从100开始从小到大的第n个纯粹合数。

输入说明 :
你写的程序需要从标准输入设备(通常为键盘)中读入多组测试数据,每组测试数据仅占一行,每行仅包括一个正整数n(1 ≤ n ≤ 100)。每组测试数据与其后一组测试数据之间没有任何空行,第一组测试数据前面以及最后一组测试数据后面也都没有任何空行。

输出说明 :
对于每一组测试数据,你写的程序需要计算出一组相应的运算结果,并将每组运算结果依次写入到标准输出设备(通常为启动该程序的文本终端,例如Windows中的命令行终端)中。每组运算结果为一个整数,即从100开始从小到大的第n个纯粹合数。每组运算结果单独形成一行数据,其行首和行尾都没有任何空格,每组运算结果与其后一组运算结果之间没有任何空行,第一组运算结果前面以及最后一组运算结果后面也都没有任何空行。

输入范例 :
10
2
1

输出范例 :
124
104
100

#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <string.h>

/* run this program using the console pauser or add your own getch, system("pause") or input loop */
int isComposite(int n){
    
    
	int i;
	for(i=2;i<=sqrt(n);i++){
    
    
		if(n%i==0){
    
    
			return 1;	
		}
	}
	return 0;
}

int isPure(int n){
    
    
	char temp[10];
	sprintf(temp,"%d",n);
	int len = strlen(temp),i=0;
		while(len--){
    
    
			int num;
			sscanf(temp,"%d",&num);
			if (num!=0&&isComposite(num)==0)
			{
    
    
				return 0;
			}
				temp[i++] ='0';
		}
		return 1;
}


int main(int argc, char *argv[]) {
    
    
	int n,i,count;
	while(scanf("%d",&n)!=EOF){
    
    
		count=0;
		i=100;
		while(1){
    
    
			if(isPure(i)){
    
    
				++count;
			}
			if(count==n){
    
    
				printf("%d\n",i);
				break;
			}
			++i;
		}
	}
	
	return 0;
}

猜你喜欢

转载自blog.csdn.net/qq_44169095/article/details/113757606
今日推荐