pat 1059(patients)

网友投稿 251 2022-09-20


pat 1059(patients)

1、题目链接 https://patest.cn/contests/pat-a-practise/1059 2、题意分析 (1)题意:给出一个数字,求出该数的的所有素数因子,并且按照一定的格式输出 (2)写一个判断是否为素数的函数isPrime();从2到sqrt(number)遍历,观察是否可以整除,是否为素数。 (3)注意输出格式 3、源代码 #include #include #define size 100000 /* 1.因子被找到的顺序总是从小到大 */ bool isPrime(int number){ int i; for(i = 2;i <= sqrt(number);i++){ if(number % i == 0 ){//如果说能够除尽 return false;//跳出循环 } } return true; } int main(){ int number; scanf("%d",&number); int i ; int array[size]={0};//数组array[]用来存储素数因子,大小表示为指数 int tempNum = number; int compare = 0 , count = 0; bool primeFlag = true;//默认为素数 for(i = 2;i <= sqrt(tempNum) ;i++){ if(number % i == 0 && isPrime(i)){//能够被除尽,并且为素数 primeFlag = false; if(compare != i){ count++;//表示有多个素数因子 compare = i; } array[i] ++ ;//表示有数 number /= i; i--;//可能还会被当前数再整除 } } printf("%d=",tempNum); if(primeFlag){ printf("%d",tempNum); return 0; } int j = 0; for(j = 2;j0){ count --; if(array[j]>1){ printf("%d^%d",j,array[j]); } else printf("%d",j); if(count!=0){ printf("*"); } } } } /* 64 97532468 */4、坑点 (1)注意素数表示,例如:5=5;


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Java spring的三种注入方式详解流程
下一篇:pat 1023(patreon)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~