2015-04-08 10:33 296人阅读 评论(0) 收藏 举报
 分类:
C/C++(60)  哈尔滨工业大学(8) 

版权声明:本文为博主原创文章,未经博主允许不得转载。

1.一个正整数的因子是所有可以整除它的正整数。而一个数如果恰好等于除它本身外的因子之和,这个数就称为完数。例如6=1+2+3(6的因子是1,2,3)。

  1. #include <stdio.h>
  2. #include <math.h>
  3. int IsPerfect(int x);
  4. int main()
  5. {
  6. int m;
  7. printf("Input m:");
  8. scanf("%d", &m);
  9. if (IsPerfect(m))  /* 完全数判定 */
  10. printf("%d is a perfect number\n", m);
  11. else
  12. printf("%d is not a perfect number\n", m);
  13. return 0;
  14. }
  15. /* 函数功能:判断完全数,若函数返回0,则代表不是完全数,若返回1,则代表是完全数 */
  16. int IsPerfect(int x)
  17. {
  18. int i;
  19. int total = 0;          /* 1没有真因子,不是完全数 */
  20. for (i=1;i<x;i++)
  21. {
  22. if (x%i==0)
  23. total = total + i;
  24. }
  25. return total==x ? 1 : 0;
  26. }

2.设计一个函数MaxCommonFactor()利用辗转相除法计算两个正整数的最大公约数

  1. #include <stdio.h>
  2. int MaxCommonFactor(int a, int b);
  3. int main()
  4. {
  5. int a, b, x;
  6. printf("Input a,b:");
  7. scanf("%d,%d", &a, &b);
  8. x =MaxCommonFactor(a,b);
  9. if (x != -1)
  10. {
  11. printf("MaxCommonFactor = %d\n", x);
  12. }
  13. else
  14. {
  15. printf("Input error!\n");
  16. }
  17. return 0;
  18. }
  19. //函数功能: 计算两个正整数的最大公约数,-1表示没有最大公约数
  20. int MaxCommonFactor(int a, int b)
  21. {
  22. int r;
  23. if (a<=0 || b<=0) return -1; // 保证输入的参数为正整数
  24. do{
  25. r=a%b;
  26. a = b;
  27. b = r;
  28. }while (r!=0);
  29. return  a;
  30. }
  1. //函数功能: 计算两个正整数的最大公约数,递归版本
  1. <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>{
  2. int r;
  3. if(a<0 || b<0) return -1;
  4. if(b==0)
  5. r=a;
  6. else
  7. r=Gcd(b,a%b);
  8. return r;
  9. }

另一种版本:

  1. int divisor(int a,int b)
  2. {
  3. int x = a<b?a:b;  //求a,b的最小数
  4. while(x)
  5. {
  6. if(a%x==0 && b%x==0)
  7. break;
  8. --x;
  9. }
  10. return x;
  11. }

3.设计一个函数MinCommonMultiple(),计算两个正整数的最小公倍数

  1. #include <stdio.h>
  2. int MinCommonMultiple(int a, int b);
  3. int main()
  4. {
  5. int a, b, x;
  6. printf("Input a,b:");
  7. scanf("%d,%d", &a, &b);
  8. x = MinCommonMultiple(a,b);
  9. if (x!=-1)
  10. printf("MinCommonMultiple = %d\n", x);
  11. else
  12. printf("Input error!\n");
  13. return 0;
  14. }
  15. //函数功能:计算两个正整数的最小公倍数,-1表示没有最小公倍数
  16. int MinCommonMultiple(int a, int b)
  17. {
  18. int i;
  19. if (a<=0 || b<=0) return -1;        // 保证输入的参数为正整数
  20. for (i=1; i<b; i++)
  21. {
  22. if ((i*a)%b==0)   return i * a;
  23. }
  24. return b * a;
  25. }

4.设计一个函数,用来判断一个整数是否为素数

  1. #include <math.h>
  2. #include <stdio.h>
  3. int IsPrimeNumber(int number);
  4. int main()
  5. {
  6. int n, ret;
  7. printf("Input n:");
  8. scanf("%d", &n);
  9. ret = IsPrimeNumber(n);
  10. if (ret!=0)
  11. {
  12. printf("%d is a prime number\n", n);
  13. }
  14. else
  15. {
  16. printf("%d is not a prime number\n", n);
  17. }
  18. return 0;
  19. }
  20. //函数功能:判断number是否是素数,函数返回非0值,表示是素数,否则不是素数
  21. int IsPrimeNumber(int number)
  22. {
  23. int i;
  24. if (number <= 1) return 0; // 负数、0和1都不是素数
  25. for (i=2; i<sqrt(number); i++)
  26. {
  27. if (number%i==0) // 被整除,不是素数
  28. return 0;
  29. }
  30. return 1;
  31. }

来自哈尔滨工业大学MOOC课件

5.回文数

输出所有不超过n(取n<256)的、其平方具有对称性质的正整数(也称为回文数)。

如:  1*1=1; 2*2=4;3*3=9;11*11=121;1,2,3,11是回文数。

  1. #include <stdio.h>
  2. #include <stdbool.h>
  3. bool isPalindrome(int num);
  4. bool isPalindrome(int num)  //判断回文数字
  5. {
  6. int pal = 0;
  7. int origin = num;
  8. while(num)
  9. {
  10. pal *= 10;
  11. pal += num % 10;
  12. num /= 10;
  13. }
  14. return pal == origin;
  15. }
  16. int main()
  17. {
  18. int n,i;
  19. scanf("%d",&n);
  20. for(i=1;i<n;i++)
  21. {
  22. if(isPalindrome(i*i) && i<256)  //打印回文数字
  23. {
  24. printf("%d\n",i);
  25. }
  26. }
  27. return 0;
  28. }

12--c完数/最大公约数/最小公倍数/素数/回文数的更多相关文章

  1. 【Python3练习题 025】 一个数,判断它是不是回文数。即12321是回文数,个位与万位相同,十位与千位相同

    [Python练习题 025] 一个5位数,判断它是不是回文数.即12321是回文数,个位与万位相同,十位与千位相同 x = input('请输入任意位数的数字:') if x == x[::-1]: ...

  2. 编写Java程序_输入一个5位数,判断它是不是回文数。即12321是回文数,个位与万位相同,十位与千位相同。

    要求: 输入一个5位数,判断它是不是回文数.即12321是回文数,个位与万位相同,十位与千位相同. 实现代码: package kaoshi; import java.util.Scanner; pu ...

  3. Java实现 洛谷 P1015 回文数(N进制回文数)

    输入输出样例 输入样例#1: 10 87 输出样例#1: STEP=4 import java.util.Scanner; public class 回文数2 { public static void ...

  4. NOI-OJ 1.13 ID:5 素数回文数的个数

    整体思路 使用埃拉拖色尼算法提前计算出1000以内的素数表. 设计一个回文判断函数isHW(int n),难点在于数字回文的判断.一个简单的方法是将数字n使用sprintf输出在一个数组中,然后从数组 ...

  5. 有趣的数-回文数(Palindrome number)

    文章转自http://blog.163.com/hljmdjlln@126/blog/static/5473620620120412525181/ 做LC上的题"Palindrome num ...

  6. yzoi1109&&viojs1042最小步数的一点看法——回文数

    Description - 问题描述 有一天,雄霸传授本人风神腿法第一式:捕风捉影..............的步法(弟子一:堂主,你大喘气呀.风:你给我闭嘴.)捕风捉影的关键是换气(换不好就会大喘气 ...

  7. 素数回文(dfs,有bug)

    素数回文 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submi ...

  8. 4N - 素数回文

    xiaoou33对既是素数又是回文的数特别感兴趣.比如说151既是素数又是个回文.现在xiaoou333想要你帮助他找出某个范围内的素数回文数,请你写个程序找出 a 跟b 之间满足条件的数.(5 &l ...

  9. 素数回文(hdu1431)

    素数回文 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submi ...

随机推荐

  1. HDU——1215 七夕节

    暴力枚举....(正解好像不是这样...) 代码: #include<cstdio> #include<cstdlib> #include<cstring> #in ...

  2. Snail—UI学习之自己定义通知NSNotification

    背景是:一个界面跳转到第二个界面 然后 第一个界面发了一个通知  然后第二个界面收到这个通知后 把里面的数据取出来 在RootViewController.m中写入以下代码 #import " ...

  3. TI C66x DSP 系统events及其应用 - 5.11(中断控制寄存器)

    C66x DSP运行中断的简要流程: 1.使能了全局中断和子中断.假设硬件检測到中断发生,那么CPU就要跳转. 2.软件把CPU内部的A,B类寄存器的值等推入堆栈保存,把当前PC寄存器的值放入IRP寄 ...

  4. Windows 文件夹修改为exe的原理和解决办法

    有关文件夹后缀改为exe的病毒 该病毒之前出现过,不过没多长时间便消失了,最新的这个应该是变种,下面解决一下该病毒在移动存储设备中的问题: 该病毒并不具备能够将文件夹改为文件的能力,只是将原有文件夹全 ...

  5. MySQL计算字段

    计算字段 数据库中存放的表是按列存放,可是有时客户机想获得的信息是若干列之间的组合,或者求和的值.这个组合或者求和的动作能够放在客户机应用程序来做.可是在数据库中实现更为高效. 这个新计算出来的结果就 ...

  6. python-pexpect_01安装

    一:python2.7.12安装   #获取python2.7.12 wget https://www.python.org/ftp/python/2.7.12/Python-2.7.12.tgz   ...

  7. LeetCode 690. Employee Importance (职员的重要值)

    You are given a data structure of employee information, which includes the employee's unique id, his ...

  8. LeetCode 350. Intersection of Two Arrays II (两个数组的相交之二)

    Given two arrays, write a function to compute their intersection. Example:Given nums1 = [1, 2, 2, 1] ...

  9. 算法竞赛入门经典 习题 2-10 排列(permutation)

    习题 2-10 用1,2,3.....,9组成3个三位数abc.def和ghi,每一个数字恰好使用一次,要求abc:def:ghi=1:2:3.输出全部解. #include <stdio.h& ...

  10. HVR数据复制软件部署之(一)--HUB端部署

    HVR数据复制软件部署之(一)--HUB端部署 本文环境: OS: RHEL5.9 x86-64bit DB: Oracle 12.1.0.2 x86-64bit HVR:highgohvr-4.7. ...