尼科彻斯定理-C语言/Java

描述        

        验证尼科彻斯定理,即:任何一个整数m的立方都可以写成m个连续奇数之和。        

        例如:

                1^3=1

                2^3=3+5

                3^3=7+9+11

                4^3=13+15+17+19

        输入一个正整数m(m≤100),将m的立方写成m个连续奇数之和的形式输出。(1≤m≤100) 

输入描述

        输入一个int整数

输出描述

        输出分解后的string

示例

        输入:6

        输出:31+33+35+37+39+41

        方法1:常规思路,直接计算

         C语言

#include

int main() {

    int m;

    scanf("%d",&m);

    if(m==1)

    {

        printf("1");

        return 0;

    }

    int i=3;

    //用while来找m个奇数相加的第一个奇数

    while (1) {

        int sum=0,count=0;

        //求m个奇数的和

        for(int j=i;count!=m;j+=2)

        {

            sum+=j;

            count++;

        }

        //如果不满足条件,i的值为后一个奇数

        if(sum!=m*m*m)

        i+=2;

        else

        break;

    }

    for(int j=0;j

    {

        if(j==m-1)

        printf("%d",i+2*j);

        else

        printf("%d+",i+2*j);

    }

    return 0;

}

        Java

import java.util.Scanner;

public class Main {

    public static void main(String[] args) {

        Scanner in = new Scanner(System.in);

        int m=in.nextInt();

        if(m==1)

        {

            System.out.printf("1");

            return ;

        }

        int i=3;

        //用while来找m个奇数相加的第一个奇数

        while (true) {

            int sum=0,count=0;

            for(int j=i;count!=m;j+=2)

            {

                sum+=j;

                count++;

            }

            //如果不满足条件,i的值为后一个奇数

            if(sum!=m*m*m)

            i+=2;

            else

            break;

        }

        for(int j=0;j

        {

            if(j==m-1)

            System.out.printf("%d",i+2*j);

            else

            System.out.printf("%d+",i+2*j);

        }

       

    }

}

        方法2:找规律,找到首个相加的奇数和输入的数之间的关系。

尼科彻斯定理-C语言/Java_第1张图片

         C语言

#include

int main() {

    int m;

    scanf("%d",&m);

    int i=m*m-m+1;

    for(int j=0;j

    {

        if(j==m-1)

        printf("%d",i+2*j);

        else

        printf("%d+",i+2*j);

    }

    return 0;

}

        Java

import java.util.Scanner;

public class Main {

    public static void main(String[] args) {

        Scanner in = new Scanner(System.in);

        int m=in.nextInt();

        int i=m*m-m+1;

        for(int j=0;j

        {

            if(j==m-1)

            System.out.printf("%d",i+2*j);

            else

            System.out.printf("%d+",i+2*j);

        }

    }

}

你可能感兴趣的:(c语言,开发语言,java,算法)