码迷,mamicode.com
首页 > 其他好文 > 详细

LightOJ 1035 Intelligent Factorial Factorization

时间:2016-08-19 10:04:03      阅读:168      评论:0      收藏:0      [点我收藏+]

标签:

题目:

Description

Given an integer N, you have to prime factorize N! (factorial N).

Input

Input starts with an integer T (≤ 125), denoting the number of test cases.

Each case contains an integer N (2 ≤ N ≤ 100).

Output

For each case, print the case number and the factorization of the factorial in the following format as given in samples.

Case x: N = p1 (power of p1) * p2 (power of p2) * ...

Here x is the case number, p1, p2 ... are primes in ascending order.

Sample Input

3

2

3

6

Sample Output

Case 1: 2 = 2 (1)

Case 2: 3 = 2 (1) * 3 (1)

Case 3: 6 = 2 (4) * 3 (2) * 5 (1)


这个题目,首先要分析哪些素数会输出。

结论是很简单的,不超过n的素数都会输出,超过n的都不会输出。

而且,2一定在里面,也就是说,2一定是第一个,这样就很方便了。

代码:

#include<iostream>
#include<stdio.h>
using namespace std;

int degree_in_fact(int m, int p)
{
	if (m)return degree_in_fact(m / p, p) + m / p;
	return 0;
}

bool isprime(int n)
{
	for (int i = 3; i*i <= n; i += 2)if (n%i == 0)return false;
	return true;
}

int main()
{
	int t, n;
	cin >> t;
	for (int cas = 1; cas <= t; cas++)
	{
		cin >> n;
		cout << "Case " << cas << ": " << n << " = 2 (" << degree_in_fact(n, 2) << ")";
		for (int i = 3; i <= n; i += 2)if (isprime(i))
		cout << " * " << i << " (" << degree_in_fact(n, i) << ")";
		cout << endl;
	}
	return 0;
}

不知道degree_in_fact这个函数的,请点击打开我的博客

LightOJ 1035 Intelligent Factorial Factorization

标签:

原文地址:http://blog.csdn.net/nameofcsdn/article/details/52247500

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!