C++ 学习笔记_0011_函数(四个整数的最大公约数、回文数等、特殊三位数)

来源:互联网 发布:如何在淘宝买bt种子 编辑:程序博客网 时间:2024/06/05 21:04

输入四个数,并求出其最大公约数

#include<iostream>using namespace std;int gcd(int, int);int gcds(int, int, int, int);int main(){int a, b, c, d;cout << "输入4个整数:"; cin >> a >> b >> c >> d;cout << "最大公约数是:" << gcds(a, b, c, d) << endl;return 0; }int gcd(int x, int y){int r;while (y > 0){r = x % y;x = y;y = r;}return x;}int gcds(int x, int y, int z, int w){return gcd(gcd(x, y),gcd(z, w));}


编制一个返回值为bool型的函数isPrimer(),用于判断参数是否为素数,isPalindrome()用于判断参数是否是回文数,调用函数回答以下问题(可以分别编制几个程序完成,也可以在一个main()函数中完成,输出时,用明显的提示语,说明正在完成哪个任务。)

(1)输出10000以内的所有素数。
(2)输出10000以内的所有回文数。
(3)输出10000以内的所有回文素数。
(4)拓展(选做):若一个素数的反序数仍为素数,则称它为可逆素数。求10000以内的所有可逆素数,在上面的代码基础上拓展。

#include<iostream>#include<cmath>using namespace std;bool isPrime(int);      //素数 bool isPalindrome(int); //回文数 int reverseNum(int);    //逆序数 int main(){int m;cout << "(1)输出10000以内的所有素数" << endl;for (m = 2; m < 10000; m++){if(isPrime(m))cout << m << '\t';}cout << endl << endl;cout << "(2)输出10000以内的所有回文数" << endl;for (m = 2; m < 10000; m++){if(isPalindrome(m))cout << m << '\t'; }cout << endl << endl;cout << "(3)输出10000以内的所有回文素数" << endl;for (m = 2; m < 10000; m++){if(isPrime(m) && isPalindrome(m))cout << m << '\t';}cout << endl << endl;cout << "(3)输出10000以内的所有可逆素数" << endl;for (m = 2; m < 10000; m++){if(isPrime(m) && isPrime(reverseNum(m)))cout << m << '\t';}cout << endl;return 0;}bool isPrime(int n){bool prime = true;int k = int(sqrt(n));for (int i = 2; i <= k; i++){if (n % i == 0){prime = false;break;}}return prime;}bool isPalindrome(int n){bool palindrome = false;if (reverseNum(n) == n)palindrome = true;return palindrome;}int reverseNum(int n){int k = 0;while (n > 0){k = k*10 + n%10;n = n/10;}return k;}

请输出满足条件n=a!+b!+c!的所有三位数n,其中,a、b、c分别是n的百、十、个位数。要求用自定义函数实现求阶乘。

#include<iostream>using namespace std;int fact(int);int main(){int n, a, b, c, sum;for (a = 1; a <= 9; a++)for (b = 0; b <= 9; b++)for (c = 0; c <= 9; c++){n = a*100 + b*10 + c;sum = fact(a) + fact(b) + fact(c);if (sum == n)cout << n << "  ";}return 0;}int fact(int n){int f = 1;for (int i = 1; i <= n; i++)f = f * i;return f;}



0 0
原创粉丝点击