1059 Prime Factors(25 分)
Given any positive integer N, you are supposed to find all of its prime factors, and write them in the format N = p1k1×p2k2×⋯×pmkm.
Input Specification:
Each input file contains one test case which gives a positive integer N in the range of long int.
Output Specification:
Factor N in the format N =
p1^
k1*
p2^
k2*
…*
pm^
km, where pi's are prime factors of N in increasing order, and the exponent ki is the number of pi -- hence when there is only one pi, ki is 1 and must NOT be printed out.
Sample Input:
97532468
Sample Output:
97532468=2^2*11*17*101*1291
#include<cstdio> #include<cmath> const int maxn = 100010; bool is_prime(int n){ if(n == 1) return false; int sqr = (int)sqrt(1.0*n); for(int i = 2; i <= sqr; i++){ if(n % i == 0) return false; } return true; } int prime[maxn],pNum = 0; void Find_prime(){ for(int i = 1 ; i < maxn; i++){ if(is_prime(i) == true){ prime[pNum++] = i; } } } struct facot{ int x,cnt; }fac[10]; int main(){ Find_prime(); int n; scanf("%d",&n); int num = 0; if(n == 1) printf("1=1"); else{ printf("%d=",n); int sqr = (int)sqrt(1.0*n); //printf("prime[0]"); for(int i = 0; i < pNum ; i++){ //printf("%d",i); if(n % prime[i] == 0){ fac[num].x = prime[i]; fac[num].cnt = 0; while(n % prime[i] == 0){ fac[num].cnt++; n /= prime[i]; } num++; } if(n == 1) break; } if(n != 1){ fac[num].x = n; fac[num].cnt = 1; } //printf("1\n"); for(int i = 0; i < num; i++){ if(i > 0) printf("*"); printf("%d",fac[i].x); if(fac[i].cnt > 1) printf("^%d",fac[i].cnt); } } return 0; }
分类:
PAT 甲级
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)