1. 约分分数
1.1 保留质数
1 /**
2 * 将数值放入到fraction数组中
3 * @param fen 简要放的 int类型数值
4 */
5 public void fenshu(int fen) {
6 fraction[i++] = fen;
7 }
1.2 定义int类型数组
1 /**
2 * 获得int 类型的数组,fraction对象
3 */
4 public void getFraction() {
5 fraction = new int[nums];
6 }
1.3 获取质数数量
1 /**
2 * 获取num有多少个质数相乘的质数的数目,质数可相同
3 * @param num 任意的int类型的数值
4 */
5 public void primeNumber(int num) {
6 if (num == 1) {
7 nums++;
8 System.out.println("num为 " + num);
9 } else {
10 // 注意:因为老师不会出0/2的数,所以没写if(numa>0)如果给num 为0这里会出现死循环
11 if (num % a == 0) {
12 nums++;
13 int d = num / a;
14 primeNumber(d);
15 } else {
16 if (num % b == 0) {
17 nums++;
18 int d = num / b;
19 primeNumber(d);
20 } else {
21 b = b + 2;
22 primeNumber(num);
23 }
24 }
25 }
26 }
1.4 将数值分解成质数(质数可以相同)
1 /**
2 * 将值分解成最小质数和集
3 * @param num 将要分解的 int类型的数值
4 */
5 public void prime(int num) {
6 if (num == 1) {
7 System.out.println("num为 " + num);
8 } else {
9 // 注意:因为老师不会出0/2的数,所以没写if(numa>0)如果给num 为0这里会出现死循环
10 if (num % a == 0) {
11 fenshu(a);
12 int d = num / a;
13 System.out.println("a为 " + a);
14 System.out.println("num为 " + d);
15 prime(d);
16 } else {
17 if (num % c == 0) {
18 fenshu(c);
19 int d = num / c;
20 System.out.println("c为 " + c);
21 System.out.println("num为 " + d);
22 prime(d);
23 } else {
24 c = c + 2;
25 System.out.println("c更改为 " + c);
26 System.out.println("num不变依旧为 " + num);
27 prime(num);
28 }
29 }
30 }
31 }
1.5 将分母和分子进行约分成最简质数
1 /**
2 * 将两个数组进行比较,如数组内有相同的数据,将其转换为1
3 * @param a 传递的第一个数组a
4 * @param b 传递的第二个数组b
5 */
6 public static void compareTwo(int[] a, int[] b) {
7 int alength = a.length;
8 int blength = b.length;
9 if (alength >= blength) {
10 for (int k = 0; k < blength; k++) {
11 for (int m = 0; m < alength; m++) {
12 if (a[m] == b[k]) {
13 a[m] = 1;
14 b[k] = 1;
15 break;
16 }
17 }
18 }
19 } else {
20 for (int k = 0; k < alength; k++) {
21 for (int m = 0; m < blength; m++) {
22 if (a[k] == b[m]) {
23 a[k] = 1;
24 b[m] = 1;
25 break;
26 }
27 }
28 }
29 }
30 }
1.6 将分子和分母的质数分别相乘得到最简分子和分母
1 /**
2 *将数组内的所有元素进行相乘
3 * @param a 数组a
4 * @return
5 */
6 public static int product(int[] a){
7 int product=1;
8 for(int s=0;s<a.length-1;s++){
9 product=product*a[s];
10 a[s]=product;
11 }
12 return product;
13 }
1.7 根据用户的条件生成分子分母
1 /**
2 * 获取随机生成一个包含分子和分母,且分子分母都为质数的数组。
3 * @param num1 分子最小值
4 * @param num2 分子最大值
5 * @param num3 分母最小值
6 * @param num4 分母最大值
7 * @return 返回一个包含分子和分母的数组
8 */
9 public static int[] fractions(int num1,int num2,int num3,int num4){
10 int[] fenshu=new int[2];
11 int first = generate(num1, num2);
12 int secound = generate(num3, num4);
13 count3Bean cBean=new count3Bean();
14 cBean.primeNumber(first);
15 cBean.getFraction();
16 cBean.prime(first);
17 int[] a=cBean.fraction;
18 count3Bean cBean2=new count3Bean();
19 cBean2.primeNumber(secound);
20 cBean2.getFraction();
21 cBean2.prime(secound);
22 int[] b=cBean2.fraction;
23 compareTwo(a, b);
24 int fenzi=product(a);
25 int fenmu=product(b);
26 fenshu[0]=fenzi;
27 fenshu[1]=fenmu;
28 return fenshu;
29 }
1.8 将分子分母进行约分
1 /**
2 * 将分数处理为不能再约分的数
3 * @param num1 分子
4 * @param num2 分母
5 * @return int类型的数组包含分子和分母
6 */
7
8 public static int[] fractions2(int num1,int num2){
9 int[] fenshu=new int[2];
10 count3Bean cBean=new count3Bean();
11 cBean.primeNumber(num1);
12 cBean.getFraction();
13 cBean.prime(num1);
14 int[] a=cBean.fraction;
15 count3Bean cBean2=new count3Bean();
16 cBean2.primeNumber(num2);
17 cBean2.getFraction();
18 cBean2.prime(num2);
19 int[] b=cBean2.fraction;
20 compareTwo(a, b);
21 int fenzi=product(a);
22 int fenmu=product(b);
23 fenshu[0]=fenzi;
24 fenshu[1]=fenmu;
25 return fenshu;
26 }
2. action 类
1 public class fenshu {
2
3 private String fenzixiao;
4 private String fenzida;
5 private String fenmuxiao;
6 private String fenmuda;
7 private String number;
8 .......
9 //此处省略get和set方法
10 public String execute(){
11 ActionContext actioncontext = ActionContext.getContext();
12 Map<String, Object> session = actioncontext.getSession();
13 List<Four> fours=count3.getFourList(Integer.parseInt(number), Integer.parseInt(fenzixiao), Integer.parseInt(fenzida), Integer.parseInt(fenmuxiao), Integer.parseInt(fenmuda));
14 session.put("fours", fours);
15 return "fenshusuccess";
16 }
17
18 }
3. 运行结果图
3.1 初始界面
3.2 用户填数据
3.3 生成题目界面(如在a/b+c/d=e中a/b和c/d都为分数)
3.4 用户填写答案
3.5 判断答案正确页面(判断代码在之后)