pat a1059(质因子分解及输出)

这道题还是没能独立AC,但是其实也正常,刚接触这个知识点,掌握的还不是很牢固。加油!!

类似质因子分解的题目,有如下几个需要注意的点
1.写判断素数的函数时,要在最开始加上一句“if(a<=1)return 0”
2.获得需要分解的数n的第一时刻就得计算出对应的素数表(即从2开始到n这一范围中的素数数组)存入prime数组内,prime数组定义在主函数内也可,大小为n+1或者更大
3.求解某数的质因子的模板一定要记牢靠
需要注意的是:
①for循环中用的数据应该是prime[i]而非i
②由于每个分量都有幂的存在,同一个数可能在分解式中多次出现,所以for循环(对每个质数都进行判断)内的if括号内还应有个while(n%prime[i]==0)的循环结构用于判断某数出现的次数。
③num++的位置应该放在if条件语句的最后,因为只有在某一个数被判断符合条件后才能对质数表的下标进行加一操作

#include
#include
using namespace std;
typedef long long ll;
int a[97532469];
struct prim
{
	int x,y;
}fac[10];

int isprime(int a)
{
	if(a<=1)return 0;
	ll b=(int)sqrt(1.0*a);
	for(int i=2;i<=b;i++)
	if(a%i==0)return 0;
	return 1;
}

int main()
{
	ll n;
	cin>>n;
	int s=(int)sqrt(1.0*n);
	cout<

你可能感兴趣的:(pat)