求大佬指点,为什么0分,难道是输入输出的顺序搞错了?
查看原帖
求大佬指点,为什么0分,难道是输入输出的顺序搞错了?
651699
HeJiaChengHeiman楼主2022/4/30 15:00
#include <bits/stdc++.h>
using namespace std;
int max_j,u[100000];
void out()
{
	for(int i=1;i<max_j;i++)
	{
		if(u[i]!=0&&i!=max_j)
		{
			cout<<i<<"^"<<u[i]<<"*";
		}		
	}
	cout<<max_j<<"^"<<u[max_j];
	for(int i=0;i<=max_j;i++)
		u[i]=0;
}
void s(int a,int j)
{
	if(a==1)
	{
		out();
		return;
	}	
	if(a>1)
	{
		if(a%j==0)
		{
			max_j=max(max_j,j);
			u[j]++;
			s(a/j,j);
		}
		if(a%j!=0)
			s(a,j+1);
	} 
}
int sum(int n)
{
	if(n==1||n==0)
		return 0;
	if(n==2)
		return 1;
	for(int i=2;i*1<=n;i++)
	{
		if(n%i==0)
			return 0;
	}
	return 1;
}
int halt(int n)
{
	if(n>40000000)
	{
		cout<<"The number is too large!";
		return 0;
	}
	if(sum(n)==1)
		cout<<"Yes!"<<endl;
	else
		cout<<"No!"<<endl;
	if(sum(n)==1||n==1||n==0)
	{
		cout<<endl;
		return 0;
	}
	else
	{
		cout<<n<<"=";
		s(n,2);
		cout<<endl<<endl;
	}	
} 
int main()
{
int n=0,t=0,qq=1;
string s;
while(1)
{
	t=0;
	n=0;
	cout<<"Enter the number=";
	getline(cin,s);
	for(int i=0;i<s.size();i++)
	{
		if('0'<=s[i]&&s[i]<='9')
		{
			n=n*10+s[i]-'0';
			t++;
		}
	}	
	if(t==0)
		return 0;
	cout<<"Prime? ";
	max_j=0;
	halt(n);	
}
	return 0;
}
2022/4/30 15:00
加载中...