tsinsen A1036. 分解质因数
2016-04-19 22:39
232 查看
学了c++忘了c,会用stl却忘了自己写数据结构……
4000
复习一下最基本的单链表。
题目:
【问题描述】
求出区间[a,b]中所有整数的质因数分解。
【输入格式】
输入两个整数a,b。
【输出格式】
每行输出一个数的分解,形如k=a1*a2*a3...(a1<=a2<=a3...,k也是从小到大的)(具体可看样例)
【样例输入】
3 10
【样例输出】
3=3
4=2*2
5=5
6=2*3
7=7
8=2*2*2
9=3*3
10=2*5
【提示】
先筛出所有素数,然后再分解。
【数据范围】
2<=a<=b<=10000
话不多说上代码。
4000
复习一下最基本的单链表。
题目:
【问题描述】
求出区间[a,b]中所有整数的质因数分解。
【输入格式】
输入两个整数a,b。
【输出格式】
每行输出一个数的分解,形如k=a1*a2*a3...(a1<=a2<=a3...,k也是从小到大的)(具体可看样例)
【样例输入】
3 10
【样例输出】
3=3
4=2*2
5=5
6=2*3
7=7
8=2*2*2
9=3*3
10=2*5
【提示】
先筛出所有素数,然后再分解。
【数据范围】
2<=a<=b<=10000
话不多说上代码。
#include <cstdio> #include <cstdlib> #include <cmath> using namespace std; bool isprime(int n) { int i, max = (int)sqrt(n); if(n == 2 || n == 3 || n == 5) return true; //n == 2 or 3 or 5 if(n == 1 || !(n % 2) || !(n % 3) || !(n % 5)) return false; //n == 1或n被2、3、5中任一个整除 for(i = 7; i <= max + 1; i++) { if(!(n % i)) return false; } return true; } struct PRIME { int a; PRIME *next; }; PRIME* create(int val) { PRIME *p = NULL; p = (PRIME*)malloc(sizeof(PRIME)); p->a = val; p->next = NULL; return p; } int main() { int i, a, b, temp; scanf("%d%d", &a, &b); PRIME *head = create(2); PRIME *p = head; for(i = 3; i <= b; i++) { if(isprime(i)) { p->next = create(i); p = p->next; } } for(i = a; i <= b; i++) { printf("%d=", i); temp = i; for(p = head; p != NULL; p = p->next) { while(temp % p->a == 0) { printf("%d", p->a); temp /= p->a; if(temp != 1) printf("*"); else break; } } printf("\n"); } return 0; }
相关文章推荐
- ListView使用技巧
- 电子相册系统(二)业务层设计
- Android计算器界面 TableLayout
- 数据库-事务和锁
- 我对MJRefresh框架的了解 -> MJRefreshComponent
- Jenkins 安装与使用--实例
- 查看需要优化的sql
- 对于该阶段学习的一部分总结
- 何时使用MINA
- 递归函数秋x的y次方
- Android几种常见的多渠道(批量)打包方式介绍
- ZOJ 3609 Modular Inverse
- hdoj 2391 Filthy Rich
- ZOJ 3609 Modular Inverse
- 浅谈h5移动端页面的适配问题
- Android短信页面
- 自定义View(五),onLayout
- android第一步---环境搭建
- leetcode 035 Search Insert Position
- 细谈C++的运算符重载