7用函数实现:判断一个数是否是完数: 在main中调用次函数,求2到1000之间的完数 #include<bits/stdc++.h> using namespace std: int js(int n) int s=0: for(inti=1:i<=n-1:i++) { if(n%i==0) { s=s+i; } return s; int main(void)仍与i的值相同 { int i; int count =0; for(i=2:i<=1000;i++) if(js(i)=i) cout <<i<<endl: } } 8用函数实现:求绝对质数 如果一个自然数是质数,且它的是数字位置经过对换后仍为质数,则称为绝对质数,例如 13,求出所有的二位的绝对质数 1)定义一个函数js,判断一个数n是否是质数(形参为),如果是质数,返回值1,否则返回 0 2)在main中,调用js,来分别判断数i和对换后的数j是否是质数 #include<bits/stdc++.h>
7 用函数实现:判断一个数是否是完数: 在 main 中调用次函数,求 2 到 1000 之间的完数 #include<bits/stdc++.h> using namespace std; int js(int n) { int s = 0; for(int i = 1; i <= n-1; i ++) { if(n%i == 0) { s = s + i; } } return s; } int main(void) //j 与 i 的值相同 { int i; int count = 0; for(i = 2; i <= 1000 ; i ++) { if( js(i) == i) { cout << i << endl; } } } 8 用函数实现:求绝对质数 如果一个自然数是质数,且它的是数字位置经过对换后仍为质数,则称为绝对质数,例如 13,求出所有的二位的绝对质数 1)定义一个函数 js, 判断一个数 n 是否是质数(形参为 n), 如果是质数,返回值 1,否则返回 0 2)在 main 中,调用 js,来分别判断数 i 和对换后的数 j 是否是质数 #include<bits/stdc++.h>
using namespace std; int js(int n) ints=1; for(int i=2:i <sqrt(n):i++) ∥注意:此处i的终止值为了提高运行速度,不要写成n-1 { if(n%i==0) { s=0:/除了1和自身外,还有其他因子,则不是质数,将s的值设为0 break: } return s; int main() int i; for(i=10,i<=99;i+)/枚举两位的整数 { inta=i/10; int b=i%10; if(js①&&js(10*b+a))∥分别判断数i和对换后的数是否是质数 cout <<i<<endl: 9求素数对1.12-10 两个相差为2的素数称为素数对,如5和7,17和19等,本题目要求找出所有两个数均不 大于n的素数对。 输入 一个正整数n。1<=n<=10000。 输出 所有小于等于的素数对。每对素数对输出一行,中间用单个空格隔开。若没有找到任何素
using namespace std; int js(int n) { int s = 1; for(int i = 2; i <= sqrt(n); i ++) // 注意: 此处 i 的终止值为了提高运行速度,不要写成 n-1 { if(n%i == 0) { s = 0; //除了 1 和自身外,还有其他因子,则不是质数,将 s 的值设为 0 break; } } return s; } int main() { int i; for(i = 10; i <= 99 ;i ++) //枚举两位的整数 { int a = i / 10; int b = i %10; if( js(i) && js(10*b+a) ) //分别判断数 i 和对换后的数是否是质数 { cout <<i <<endl; } } } 9 求素数对 1.12--10 两个相差为 2 的素数称为素数对,如 5 和 7,17 和 19 等,本题目要求找出所有两个数均不 大于 n 的素数对。 输入 一个正整数 n。1 <= n <= 10000。 输出 所有小于等于 n 的素数对。每对素数对输出一行,中间用单个空格隔开。若没有找到任何素
数对,输出empty。 样例输入 100 样例输出 35 57 1113 1719 2931 4143 5961 7173 分析: 1)定义一个函数js,判断n是否是质数,是-1,不是-0 2)main中,对小于n的数来进行枚举: for(inti=2:i<=n-2:i=i+1), 注意此处的i的终止值为n-2,不能为n 对每个i调用js(i)和js(+2),判断i和i+2是否是质数,如果是,则输出这两个数 #include<bits/stdc++.h> using namespace std; int js(intn)∥判断n是否是质数 intr=1; for(inti=2:i<=n-1:i++) if(n%i=0) r=0: break; return r; int main(void) { int n; cin >>n: int x =1;
数对,输出 empty。 样例输入 100 样例输出 3 5 5 7 11 13 17 19 29 31 41 43 59 61 71 73 分析: 1) 定义一个函数 js, 判断 n 是否是质数,是--1 ,不是--0 2) main 中,对小于 n 的数来进行枚举: for(int i = 2; i <= n-2; i = i +1) ,注意此处的 i 的终止值为 n-2,不能为 n 对每个 i 调用 js(i)和 js(i+2),判断 i 和 i+2 是否是质数,如果是,则输出这两个数 #include<bits/stdc++.h> using namespace std; int js(int n) //判断 n 是否是质数 { int r = 1; for(int i = 2 ; i <= n-1;i ++) { if(n % i == 0) { r = 0; break; } } return r; } int main(void) { int n; cin >>n; int x = 1;
for(inti=2;i<=n-2;i=i+1)/注意此处的i的终止值为n-2,不能为n if(js(i)&&js(i+2)) cout<<i<<""<<i+2<<endl: X=0: } if(x==1) { cout <<"empty"<<endl: } 10哥德巴赫猜想 大于6的偶数等于两个质数之和,编程将6-100所有的偶数表示成两个质数的和,要求: 每个数只拆分一次,且保证第一个加数最小 分析: 1)定义一个函数js,判断一个数n是否是质数,是:返回1,否:返回0 2)对每个偶数1,用一个循环来枚举它的两个加数(G和-j),为了保证第一个加数小, 此时j的终止值为i/2,然后调用js函数两次,分别判断j和可j是否是质数。如果是,则输 出这两个数 #include <bits/stdc++.h> using namespace std; int jsl(int n) { ints=1; for(int i=2;i<=sqrt(n);i++) if(n%i==0) { s=0,∥除了1和自身外,如果还有其他因子,则不是质数,将s的值为0 break; } } return s;
for(int i = 2; i <= n-2; i = i +1) //注意此处的 i 的终止值为 n-2,不能为 n { if(js(i) && js(i+2)) { cout<<i<<" "<<i+2 <<endl; x = 0; } } if( x == 1) { cout <<"empty" << endl; } } 10 哥德巴赫猜想 大于 6 的偶数等于两个质数之和,编程将 6--100 所有的偶数表示成两个质数的和,要求: 每个数只拆分一次,且保证第一个加数最小 分析: 1) 定义一个函数 js ,判断一个数 n 是否是质数,是: 返回 1 , 否:返回 0 2) 对每个偶数 i,用一个循环来枚举它的两个加数(j 和 i - j ), 为了保证第一个加数小, 此时 j 的终止值为 i/2,然后调用 js 函数两次,分别判断 j 和 i-j 是否是质数。如果是,则输 出这两个数 #include <bits/stdc++.h> using namespace std; int js1(int n) { int s = 1; for(int i = 2; i <= sqrt(n); i ++) { if(n%i == 0) { s = 0; // 除了 1 和自身外,如果还有其他因子,则不是质数,将 s 的值为 0 break; } } return s;
} int main() { for(inti=6;i<=100;i=i+2)/∥枚举从6到100的偶数,i每次递增2 { for(intj=2,j<=i/2;j+)仍的终止值为i/2,可以保证第一个加数最小 if(js1(①i&&jsl(i-j))l/将i拆分为j和i-j { cout <<i<<"="<<j<<"+"<<i-j<<endl; 将数ⅰ表示成两个两个质数的和 break,∥每个数只拆分一次,如果找到了,就break退出 } } } 11亲和数 如果整数a的因子之和(不包括自身)等于整数b,b的因子之和等于a,则称为a和b为 一对“亲和数”,求最小的一对亲和数(a◇b) 1)定义一个函数js,求一个数的因子之和 2)在main中,先调用js函数,求出数n的因子之和为b,然后在调用js函数,求b的因 子之和,如果此和等于n,则为所求 #include <bits/stdc++.h> using namespace std; int js(int n) { int s=0; for(inti=1;i<=n-l;i+)/W枚举因子 ifn%i=0)/如果为因子 s=s+i;∥则累加 } }
} int main() { for(int i = 6 ; i <= 100 ; i = i + 2) //枚举从 6 到 100 的偶数,i 每次递增 2 { for(int j = 2; j <= i/2 ; j ++) //j 的终止值为 i/2,可以保证第一个加数最小 { if( js1(j) &&js1(i-j) ) //将 i 拆分为 j 和 i -j { cout <<i << "=" <<j << "+" << i-j <<endl; //将数 i 表示成两个两个质数的和 break; //每个数只拆分一次,如果找到了,就 break 退出 } } } } 11 亲和数 如果整数 a 的因子之和(不包括自身)等于整数 b,b 的因子之和等于 a,则称为 a 和 b 为 一对“亲和数”,求最小的一对亲和数(a<>b) 1) 定义一个函数 js,求一个数的因子之和 2) 在 main 中,先调用 js 函数,求出数 n 的因子之和为 b,然后在调用 js 函数,求 b 的因 子之和,如果此和等于 n, 则为所求 #include <bits/stdc++.h> using namespace std; int js(int n) { int s = 0; for(int i = 1; i <= n-1; i ++)//枚举因子 { if(n%i == 0) //如果为因子 { s = s + i; //则累加 } }