函数课堂练习

1.求正整数2和100之间的完全数。完全数:因子之和等于它本身的自然数,如6=1+2+3


2.编程求2~n(n为大于2的正整数)中有多少个素数。

#include
#include
using namespace std; 
bool sh(int);
int main(){
	int n,i,num=0;
	cin >> n;
	for(i=2;i<=n;i++){
		if(sh(i)==true) num++;
	}
	cout<<num<<endl;
	return 0;
}
bool sh(int i){
	for(int x=2; x<=sqrt(i);x++){
		if(i%x==0) return false;
	}
	return true;
}

3.已知 m=max(a,b,c)/(max(a+b,b,c) * max(a,b,b+c)),输入a,b,c,求m。把求三个数的最大数max(x,y,z)分别定义成函数和过程来做。

double mymax(int x,int y,int z){
	if(x<y) x=y
	if(x<z) x=z
	return x;
}
int main(){
	double a,b,c,m;
	cin >> a >> b >> c;
	m = mymax(a,b,c) / (mymax(a+b,b,c)*mymax(a,b,b+c));
	printf("%.3lf\n",m);
	return 0;
}

4.如果一个自然数是素数,且它的数字位置经过对换后仍为素数,则称为绝对素数,例如13。试求出所有二位绝对素数。

#include
#include
using namespace std;

bool sh(int i){
	for(int x=2; x<=sqrt(i);x++){
		if(i%x==0) return false;
	}
	return true;
}
int main(){
	for(int i=10; i<=99; i++){
		if(sh(i) == true && sh((i%10*10 + i/10)) == true)
			cout << i << endl;
	}
	return 0;
}

5.自然数a的因子是指能被a整除的所有自然数,但不含a本身。例如12的因子为:1,2,3,4,6。若自然数a的因子之和为b,而且b的因子之和又等于a,则称a,b为一对“亲和数” 。求最小的一对亲和数(a<>b)。

#include
using namespace std;
int num(int x){
	int sum=0;
	for(int i=1; i<=x/2; i++){
		if(x%i==0) sum+=i;
	}
	return sum;
}

int main(){
	int i=1;
	while(true){
		if (num(num(i)) == i && num(i) != i){
			cout << i << "和" << num(i) << "是一对儿亲和数" << endl;
			break;
		}
		i++;
	}
	return 0;
}

6.如果一个数从左边读和从右边读都是同一个数,就称为回文数。例如6886就是一个回文数,求出所有的既是回文数又是素数的三位数。

#include
#include
using namespace std;

bool sh(int i){
	for(int x=2; x<=sqrt(i);x++){
		if(i%x==0) return false;
	}
	return true;
}

int main(){
	for(int i=100; i<=999; i++){
		if(sh(i) && (i%10) == (i/100)){
			cout << i << endl;
		}
	}
	return 0;
}

7.根据公式arctanx(x)=x-x3/3+x5/5-x7/7+…和 pi=6*arctanx(1/sqrt(3)),定义函数arctanx(x),求当最后一项小于10^-6时pi的值。


8.哥德巴赫猜想的命题之一是:大于6 的偶数等于两个素数之和。编程将6~100所有偶数表示成两个素数之和。

你可能感兴趣的:(C++基础,c++)