1096. Consecutive Factors (20)

#include <iostream>
#include <vector>
#include <math.h>

using namespace std;

int judge(int n)
{
	int r = sqrt(n * 1.0), i;
	for(i = 2; i <= r; i++)
	{
		if(n % i == 0)
		{
			return 0;
		}
	}

	return 1;
}

int main()
{
	int n;
	scanf("%d", &n);

	if(judge(n) == 1)
	{
		printf("1\n%d\n", n);
		return 0;
	}

	vector<int> v[2];
	int i, maxcount = 0, curcount, curn, j;

	for(i = 2; i <= n; i++)
	{
		if(n % i == 0)
		{
			curn = n;
			curcount = 0;
			j = i;
			v[0].clear();

			while(curn % j == 0)
			{
				v[0].push_back(j);
				curn /= j;

				j++;
				curcount++;
			}

			if(curcount > maxcount)
			{
				maxcount = curcount;

				v[1].clear();
				v[1] = v[0];
			}
		}
	}

	printf("%d\n", maxcount);

	for(i = 0; i < maxcount; i++)
	{
		if(i > 0)
		{
			printf("*");
		}

		printf("%d", v[1][i]);
	}

	printf("\n");

	system("pause");
	return 0;
}

 

posted on 2025-11-23 17:23  王景迁  阅读(2)  评论(0)    收藏  举报

导航