PAT乙级(5)分解因数 NowCoder数列

PAT乙级(5)分解因数 NowCoder数列

题目描述

所谓因子分解,就是把给定的正整数a,分解成若干个素数的乘积,即 a = a1 × a2 × a3 × … × an,并且 1 < a1 ≤ a2 ≤ a3 ≤ … ≤ an。其中a1、a2、…、an均为素数。先给出一个整数a,请输出分解后的因子。

输入描述:

输入包含多组数据,每组数据包含一个正整数a(2≤a≤1000000)。

输出描述:

对应每组数据,以“a = a1 * a2 * a3...”的形式输出因式分解后的结果。

输入例子:

10
18

输出例子:

10 = 2 * 5
18 = 2 * 3 * 3

思路:

每次输入一个数,从2开始判断,直到根号下 n 为止,当 n不等于 当前约数i 时, 进行判断,如果 n%i ==0 那就输出,然后 n = n/i 进行下一个判断.

比如 16

16 ! =4

16 % 2 ==0

16 =2 *

16/ 2 = 8


8!=2

到最后一步时

n = 4 /2 ;

此时 n =2

而 外层的 while 中 2!=2 false 退出 while

输出 最后一个 2

代码:

int main()
{
	int  n;
	while (scanf_s("%d", &n) != EOF)
	{
		cout << "n = ";
		int i ;
			for (i = 2; i <= sqrt(n); i++)
			{
				while (n != i)
				{
					if (n % i == 0)
					{
						cout << i << " * ";
						n = n / i;
					}
					else
					{
						break;
					}
				}
			}
			cout << n <<endl;
			// 输出剩下的数 
			//  12 = 2 *2 *3    当3 %2 不等于0 时  跳出 for   输出3 
		}
	return 0;
}

题目描述

NowCoder最近在研究一个数列:

F(0) = 7

F(1) = 11

F(n) = F(n-1) + F(n-2) (n≥2)

他称之为NowCoder数列。请你帮忙确认一下数列中第n个数是否是3的倍数。

输入描述:

输入包含多组数据。每组数据包含一个整数n,(0≤n≤1000000)。

输入描述:

对应每一组输入有一行输出。如果F(n)是3的倍数,则输出“Yes”;否则输出“No”。

输入例子:

0
1
2
3
4
5

输出例子:

No
No
Yes
No
No
No

思路:

首先自己写出这个数列的前几项,找规律

项数 0 1 2 3 4 5 6

数字 7 11 18 29 47 76 123

余数 1 2 0 2 2 1 0

(n-2)%4 ==0 时,F(n)能被3整除

#include <iostream>
using namespace std;
int main()
{
	long long n;
	while (scanf_s("%d", &n) != EOF)
	{
		int a = ((n - 2) % 4 == 0)?1:0;
		if (a)
		{
			cout <<"Yes"<< endl;
		}
		else
		{
			cout << "No" << endl;
		}
	}
	return 0;
}


// scanf 和 printf 更快    
#include <iostream>
using namespace std;
int main()
{
	int i;
	while (scanf("%d", &i) != EOF)
	{
		if (i % 4 == 2)
			printf("Yes\n");
		else
			printf("No\n");
	}
	return 0;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值