函数课堂练习

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


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

#include<iostream>
#include<cmath>
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<iostream>
#include<cmath>
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<iostream>
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<iostream>
#include<cmath>
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所有偶数表示成两个素数之和。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

松桥爸(仁勇)

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值