大学IT网 - 最懂大学生的IT学习网站! QQ资料交流群:367606806
当前位置:大学IT网 > Java技巧 > 整数分解成多个连续的整数序列

整数分解成多个连续的整数序列

关键词:Java整数分解成多个连续的整数序列  阅读(605) 赞(11)

[摘要]本文主要是对整数分解成多个连续的整数序列的讲解,希望对大家学习整数分解成多个连续的整数序列有所帮助。

  题目描述:将一个正整数表示为n(n>=2)个连续正整数之和,如:

  15=1+2+3+4+5

  15=4+5+6

  15=7+8

  输入任何一个正整数,找出符合这种要求的所有连续正整数序列。

  如果没有找到,刚输出NULL

  分析:利用差数列公式求解,假设输入整数n,n=(a1+a2)*(a2-a1+1)/2,0<a1<a2<n。

  基于这个方法,不难写出如下代码:

  [java]

  void separateIntoItems(long n) {

  if (n <= 2) {

  System.out.println("NULL");

  return;

  }

  double max = Math.pow(2, 64);

  if ((double) n > max) {

  System.out.println("NULL");

  return;

  }

  boolean isExist = false;

  // a1 is the first number

  for (int a1 = 1; a1 <= n / 2; a1++) {

  // a2 is the last number

  for (int a2 = a1 + 1; a2 < n; a2++) {

  // if exist output the result

  if ((a1 + a2) * (a2 - a1 + 1) == n * 2) {

  isExist = true;

  System.out.print(a1);

  for (int t = a1 + 1; t <= a2; t++) {

  System.out.print(" " + t);

  }

  System.out.println();

  }

  }

  }

  if (!isExist) {

  System.out.println("NULL");

  }

  }



相关评论