12--c完数/最大公约数/最小公倍数/素数/回文数
哈尔滨工业大学(8) 
版权声明:本文为博主原创文章,未经博主允许不得转载。
1.一个正整数的因子是所有可以整除它的正整数。而一个数如果恰好等于除它本身外的因子之和,这个数就称为完数。例如6=1+2+3(6的因子是1,2,3)。
- #include <stdio.h>
- #include <math.h>
- int IsPerfect(int x);
- int main()
- {
- int m;
- printf("Input m:");
- scanf("%d", &m);
- if (IsPerfect(m)) /* 完全数判定 */
- printf("%d is a perfect number\n", m);
- else
- printf("%d is not a perfect number\n", m);
- return 0;
- }
- /* 函数功能:判断完全数,若函数返回0,则代表不是完全数,若返回1,则代表是完全数 */
- int IsPerfect(int x)
- {
- int i;
- int total = 0; /* 1没有真因子,不是完全数 */
- for (i=1;i<x;i++)
- {
- if (x%i==0)
- total = total + i;
- }
- return total==x ? 1 : 0;
- }
2.设计一个函数MaxCommonFactor()利用辗转相除法计算两个正整数的最大公约数
- #include <stdio.h>
- int MaxCommonFactor(int a, int b);
- int main()
- {
- int a, b, x;
- printf("Input a,b:");
- scanf("%d,%d", &a, &b);
- x =MaxCommonFactor(a,b);
- if (x != -1)
- {
- printf("MaxCommonFactor = %d\n", x);
- }
- else
- {
- printf("Input error!\n");
- }
- return 0;
- }
- //函数功能: 计算两个正整数的最大公约数,-1表示没有最大公约数
- int MaxCommonFactor(int a, int b)
- {
- int r;
- if (a<=0 || b<=0) return -1; // 保证输入的参数为正整数
- do{
- r=a%b;
- a = b;
- b = r;
- }while (r!=0);
- return a;
- }
- //函数功能: 计算两个正整数的最大公约数,递归版本
- <pre name="code" class="cpp"><p>int <span style="font-family: Arial, Helvetica, sans-serif; font-size: 12px;"><strong>MaxCommonFactor</strong></span>(int a,int b)</p>{
- int r;
- if(a<0 || b<0) return -1;
- if(b==0)
- r=a;
- else
- r=Gcd(b,a%b);
- return r;
- }
另一种版本:
- int divisor(int a,int b)
- {
- int x = a<b?a:b; //求a,b的最小数
- while(x)
- {
- if(a%x==0 && b%x==0)
- break;
- --x;
- }
- return x;
- }
3.设计一个函数MinCommonMultiple(),计算两个正整数的最小公倍数。
- #include <stdio.h>
- int MinCommonMultiple(int a, int b);
- int main()
- {
- int a, b, x;
- printf("Input a,b:");
- scanf("%d,%d", &a, &b);
- x = MinCommonMultiple(a,b);
- if (x!=-1)
- printf("MinCommonMultiple = %d\n", x);
- else
- printf("Input error!\n");
- return 0;
- }
- //函数功能:计算两个正整数的最小公倍数,-1表示没有最小公倍数
- int MinCommonMultiple(int a, int b)
- {
- int i;
- if (a<=0 || b<=0) return -1; // 保证输入的参数为正整数
- for (i=1; i<b; i++)
- {
- if ((i*a)%b==0) return i * a;
- }
- return b * a;
- }
4.设计一个函数,用来判断一个整数是否为素数。
- #include <math.h>
- #include <stdio.h>
- int IsPrimeNumber(int number);
- int main()
- {
- int n, ret;
- printf("Input n:");
- scanf("%d", &n);
- ret = IsPrimeNumber(n);
- if (ret!=0)
- {
- printf("%d is a prime number\n", n);
- }
- else
- {
- printf("%d is not a prime number\n", n);
- }
- return 0;
- }
- //函数功能:判断number是否是素数,函数返回非0值,表示是素数,否则不是素数
- int IsPrimeNumber(int number)
- {
- int i;
- if (number <= 1) return 0; // 负数、0和1都不是素数
- for (i=2; i<sqrt(number); i++)
- {
- if (number%i==0) // 被整除,不是素数
- return 0;
- }
- return 1;
- }
来自哈尔滨工业大学MOOC课件
输出所有不超过n(取n<256)的、其平方具有对称性质的正整数(也称为回文数)。
如: 1*1=1; 2*2=4;3*3=9;11*11=121;1,2,3,11是回文数。
- #include <stdio.h>
- #include <stdbool.h>
- bool isPalindrome(int num);
- bool isPalindrome(int num) //判断回文数字
- {
- int pal = 0;
- int origin = num;
- while(num)
- {
- pal *= 10;
- pal += num % 10;
- num /= 10;
- }
- return pal == origin;
- }
- int main()
- {
- int n,i;
- scanf("%d",&n);
- for(i=1;i<n;i++)
- {
- if(isPalindrome(i*i) && i<256) //打印回文数字
- {
- printf("%d\n",i);
- }
- }
- return 0;
- }
12--c完数/最大公约数/最小公倍数/素数/回文数的更多相关文章
- 【Python3练习题 025】 一个数,判断它是不是回文数。即12321是回文数,个位与万位相同,十位与千位相同
[Python练习题 025] 一个5位数,判断它是不是回文数.即12321是回文数,个位与万位相同,十位与千位相同 x = input('请输入任意位数的数字:') if x == x[::-1]: ...
- 编写Java程序_输入一个5位数,判断它是不是回文数。即12321是回文数,个位与万位相同,十位与千位相同。
要求: 输入一个5位数,判断它是不是回文数.即12321是回文数,个位与万位相同,十位与千位相同. 实现代码: package kaoshi; import java.util.Scanner; pu ...
- Java实现 洛谷 P1015 回文数(N进制回文数)
输入输出样例 输入样例#1: 10 87 输出样例#1: STEP=4 import java.util.Scanner; public class 回文数2 { public static void ...
- NOI-OJ 1.13 ID:5 素数回文数的个数
整体思路 使用埃拉拖色尼算法提前计算出1000以内的素数表. 设计一个回文判断函数isHW(int n),难点在于数字回文的判断.一个简单的方法是将数字n使用sprintf输出在一个数组中,然后从数组 ...
- 有趣的数-回文数(Palindrome number)
文章转自http://blog.163.com/hljmdjlln@126/blog/static/5473620620120412525181/ 做LC上的题"Palindrome num ...
- yzoi1109&&viojs1042最小步数的一点看法——回文数
Description - 问题描述 有一天,雄霸传授本人风神腿法第一式:捕风捉影..............的步法(弟子一:堂主,你大喘气呀.风:你给我闭嘴.)捕风捉影的关键是换气(换不好就会大喘气 ...
- 素数回文(dfs,有bug)
素数回文 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submi ...
- 4N - 素数回文
xiaoou33对既是素数又是回文的数特别感兴趣.比如说151既是素数又是个回文.现在xiaoou333想要你帮助他找出某个范围内的素数回文数,请你写个程序找出 a 跟b 之间满足条件的数.(5 &l ...
- 素数回文(hdu1431)
素数回文 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submi ...
随机推荐
- poj—— 3037 Saving Beans
Saving Beans Time Limit: 6000/3000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Tot ...
- MySQL主从复制邮件报警脚本
#!/bin/shexport PATH=$PATH:/application/mysql/3306/binlogFile=`date +"%Y-%m-%d %H:%M:%S"`_ ...
- Effictive Java学习笔记1:创建和销毁对象
建议1:考虑用静态工厂方法代替构造器 理由:1)静态方法有名字啊,更容易懂和理解.构造方法重载容易让人混淆,并不是好主意 2)静态工厂方法可以不必每次调用时都创建一个新对象,而公共构造函数每次调用都会 ...
- c++中的set_new_handler和new_handler
当operator new申请一个内存失败的时候,它会进行如下的处理步骤: 1.如果存在客户指定的处理函数,则调用处理函数(new_handler),如果不存在则抛出一个异常. 2.继续申请内存 ...
- C/C++ Threads): Creating worker threads that will be listening to jobs and executing them concurrently when wanted
Suppose we have two workers. Each worker has an id of 0 and 1. Also suppose that we have jobs arrivi ...
- iOS推断当前控制器是否在显示
当点击一个cell或者button的事件,处理比較耗时,在异步线程中执行中.当子线程得到执行结果时可能不在当前控制器上了.此时我们须要取消子线程后边的事情. 此刻,当得到结果时须要推断是否在当前控制器 ...
- mysql中间件amoeba实现mysql读写分离
Amoeba是一个以MySQL为底层数据存储,并相应用提供MySQL协议接口的proxy.它集中地响应应用的请求,根据用户事先设置的规则.将SQL请求发送到特定的数据库上运行.基于此能够实现负载均衡. ...
- POJ 3683 Priest John's Busiest Day (2-SAT+输出可行解)
题目地址:POJ 3683 第一次做须要输出可行解的题目. . .大体思路是先用强连通来推断是否有可行解,然后用逆序建图.用拓扑排序来进行染色.然后输出可行解. 详细思路见传送门 由于推断的时候少写了 ...
- 深分页(Deep Pagination)
取回阶段 | Elasticsearch: 权威指南 | Elastic https://www.elastic.co/guide/cn/elasticsearch/guide/current/_fe ...
- MCU低功耗设计(三)产品
关键词: 低功耗设计, 无线通信产品, LoRa长距离, Contiki系统, 能耗实时跟踪 引言: 能耗对电池供电的产品来说是一个重大问题.一旦电能耗尽设备将"罢工".在< ...