第3周中级练习(owefhowefwef)

1.计算1!+2!+3!+…+n!
题目内容:输入n(0<n<13),计算1!+2!+3!+4!+…+n!。

//输入n(0<n<13),计算1!+2!+3!+4!+…+n!。
#include<iostream>
using namespace std;
int main()
{
	int n, u=1, sum=0,i;
	cin >> n;
	for (i = 2; i <= (n+1); i++)
	{
		sum += u;
		u *= i;
	}
	cout << sum;
	return 0;
}

2.题目内容:

求a+aa+aaa+aaaa+…+aa…a(第n项,n个a),其中a是1~9的整数。例如,a=1,n=3时,式子为1+11+111,结果为123。

#include<iostream>
using namespace std;
int main()
{
	int a, n;
	cin >> a >> n;
	int sum=0, u=a;//总和和通项
	int i;//循环控制变量
	for (i = 1; i <= n; i++)
	{
		sum += u;
		u = u * 10 + a;
	}
	cout << sum;
	return 0;
}

3.题目内容:

arcsin(x)写成级数形式为:用户输入x,利用该式,计算反正弦函数的值。结束条件设为|u|<1E-8(小于1E-8的项不加入和中),其中u为通项。

//用户输入x,利用该式,计算反正弦函数的值。
//结束条件设为|u|<1E-8(小于1E-8的项不加入和中),其中u为通项。
#include<iostream>
using namespace std;
int main()
{
	double x, u, sum;
	double n = 1;
	cin >> x;
	u = x;
	sum = x;
	while (u >= 1E-8||u<-(1E-8))
	{
		u = u * (2.0 * n - 1) * (2.0 * n - 1) * x * x / 2.0 / n / (2.0 * n + 1);//两项关系
		sum += u;
		n++;
	}
	cout << sum;
	return 0;
}

4.题目内容:

设n是一任意自然数,若将n的各位数字反向排列所得的自然数n1与n相等,则称n是回文数。例如,12321,反向排列还是12321,它是一个回文数。而1234,反向排列为4321,它不是回文数。

//编写程序,输入一个正整数,判断该数是不是回文数。是显示YES,不是显示NO。
#include<iostream>
using namespace std;
int main()
{
	int n;
	cin >> n;
	int sum = 0;//反序数
	int a = n;//正序数,因为n值变了,这里保存n的值
	while (n > 0)
	{
		sum = sum * 10 + n % 10;
		n /= 10;
	}
	if (sum == a)
	{
		cout << "YES";
	}
	else
	{
		cout << "NO";
	}
	return 0;
}

5.整数的素数因子分解
题目内容:任意一个大于1的正整数可以表达为一系列素数的乘积,这样的分解是唯一的,称为素数分解。例如,60可以分解为2235。编写程序,显示用户输入的一个正整数的素数分解,输出格式形如:60=2235,7=7等。

//任意一个大于1的正整数可以表达为一系列素数的乘积,
//这样的分解是唯一的,称为素数分解,编写程序求素数分解
#include<iostream>
using namespace std;
int is(int a)//判断是否为质数
{
	int flag=1;
	if (a == 1)
	{
		flag = 0;
	}
	else
	{
		for (int i = 2; i < a; i++)
		{
			if (!(a % i))
			{
				flag = 0; break;
			}
		}
	}
	return flag;
}
int main()
{
	int n;
	cin >> n;
	cout << n << "=";
	for (int i = 2; i <= n; i++)
	{
		while (is(i) == 1 && (n % i == 0))//此处不能用if,因为一个质数可能出现两次
		{
			cout << i;
			if (i < n)
			{
				cout << "*";
			}
			n /= i;
		}
	}
	return 0;	
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值