进阶题73 纯粹合数
73 纯粹合数
作者: 朱凯时间限制: 10S章节: 字符串
问题描述 :
明明的爸爸是一位数学家,明明受他爸爸的影响从小就喜欢数学,经常向他爸爸学习或请教数学问题。
一天,明明问他爸爸什么是合数,明明的爸爸回答说:“首先,合数都是大于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 <string.h>
int nb[100];
int function(int number){//判断是否还能被其他整数相除(除了1和它本身)int i;for (i = 2; i < number; i++){if (number%i == 0){return 1;}}return 0;
}
int pure(int start){char res[10];sprintf(res, "%d", start);//将start值输入到res中int len = strlen(res);int count = 0;int i = 0;while (len--){int num;sscanf(res, "%d",&num);//将res值读入到num中if (num != 0 && function(num) == 0){return 0;}res[i++] = '0';//前置为0 (干掉高位)}return 1;
}int main(){int n;while (scanf("%d", &n) != EOF){int i;int count = 0;for (i = 100;; i++){if (pure(i))count++;if (count == n)break;}printf("%d\n", i);}return 0;
}
小结:1.学会了sscanf()函数的用法与sprintf()函数的用法
将字符转换为数字简直棒极了
2.如何去掉数字高位(字符前置为0)
去掉数字低位(除以10)
进阶题73 纯粹合数相关推荐
- misc高阶 攻防世界_攻防世界 Misc 进阶题(一)
攻防世界 Misc 进阶题(一) 关于隐写术的思路或方法 转载: https://blog.csdn.net/a_small_rabbit/article/details/79644078 隐 ...
- python教程07-while语句的基本使用、for...in循环的使用、break与continue、打印矩形三角形九九乘法表、基础题、进阶题
python教程_小白入门/2020/7/20 行百里者半九十,你可一定要坚持下去啊 前几天家里有事更新给耽误了,后续会稳定更新的,一起加油! 学习目标 文章目录 python教程_小白入门/2020 ...
- begin.lydsy 入门OJ题库:1104:纯粹合数
1104: 纯粹素数 Time Limit: 1 Sec Memory Limit: 128 MB Submit: 258 Solved: 91 [Submit][Status][Web Boar ...
- 【愚公系列】2021年11月 攻防世界-进阶题-MISC-055(肥宅快乐题)
文章目录 一.肥宅快乐题 二.答题步骤 1.视频播放器 2.base64 总结 一.肥宅快乐题 题目链接:https://adworld.xctf.org.cn/task/task_list?type ...
- 天梯赛2022年比赛试题,进阶题L2,登顶题L3试题(仅题目)基础题L1有代码,请看本专栏另一篇
目录 L2-1 插松枝 (25 分) L2-2 老板的作息表 (25 分) L2-3 龙龙送外卖 (25 分) L2-4 大众情人 (25 分) L3-1 千手观音 (30 分) L3-2 关于深度优 ...
- 【愚公系列】2021年11月 攻防世界-进阶题-MISC-018(快乐游戏题)
文章目录 一.快乐游戏题 二.答题步骤 1.无 总结 一.快乐游戏题 文件:攻防世界下载对应文件 二.答题步骤 1.无 这题很简单直接玩游戏就可以得到flag flag:UNCTF{c78391055 ...
- PTA —— 基础编程题目集 —— 编程题 —— 7-3 逆序的三位数 (10 分)
题目 程序每次读入一个正3位数,然后输出按位逆序的数字.注意:当输入的数字含有结尾的0时,输出不应带有前导的0.比如输入700,输出应该是7. 输入格式: 每个测试是一个3位的正整数. 输出格式: 输 ...
- 面试进阶题集锦-持续更新
面向对象的"六原则一法则" - 单一职责原则:一个类只做它该做的事情.(单一职责原则想表达的就是"高内聚",写代码最终极的原则只有六个字"高内聚.低耦 ...
- PTA : 函数题 7-3 两个有序链表序列的交集 (20 分)
大一下本期数据结构 数据结构题目集 两个有序链表序列的交集 (20 分) 已知两个非降序链表序列S1与S2,设计函数构造出S1与S2的交集新链表S3. 输入格式: 输入分两行,分别在每行给出由若干个正 ...
最新文章
- 《黑客与画家》读后感
- linux下的c库函数大全
- couldn't register *** with the bootstrap server. Error: unknown error code.
- 【学习笔记】供应链金融简介(精华)
- ESP32彩屏GUI试玩
- 牛客练习赛51-记录
- java的io中replace咋么使用_Java.io.ObjectOutputStream.replaceObject()方法实例
- python代码范文_Python any()用法及代码示例
- 杂志社的电子邮件地址
- 计算机知识技能大赛主持稿,计算机知识技能大赛.doc
- 马哥2020linux笔记下载,马哥linux 基础命令笔记
- PHP获取当前域名的记录
- 实用工具:常用数学公式
- 世界所有国家的信息(2)
- JAVA面大厂简历怎么写_大厂程序员来谈一谈要如何写简历!!(附简历模板)...
- Kafka同步发送与异步发送消息
- Word文档如何在方框里打勾?三招让你从入门到精通,工作效率翻倍
- SQLite实现获取本机短信数据
- 【20220108】【雷达】毫米波雷达(二)—— 毫米波雷达和激光雷达的区别及优缺点比较
- ubuntu20.04 屏幕共享打不开
热门文章
- 云服务器安装虚拟机教程视频,从零开始安装VMwareTools的详细步骤(图文教程)
- python画易烊千玺_教你如何轻松画出逼真的易烊千玺
- Windows下连接RTL-SDR直接使用命令听FM广播
- 5、查询所有同学的学生编号、学生姓名、选课总数、所有课程的总成绩
- 判定是否互为字符重排(入门算法30)
- 《道德经》第二十六章
- 51单片机导盲手杖_超声波测距+DS18B20测温设计
- java多线程核心技术_Java多线程编程核心技术(笔记)
- windows编程如何更改窗口图标和光标
- Docker快速搭建OpenProject项目管理协作平台