【4858.com】第④周编制程序演习,第9周编制程序题

By admin in 4858.com on 2019年3月26日

所谓完数便是该数恰好等于除自个儿外的因子之和。例如:6=1+2+3,在那之中① 、二 、3为6的因数。本题须求编写程序,找出自由两正整数m和n之间的保有完数。

所谓完数正是该数恰好等于除本身外的因子之和。例如:6=1+2+3,当中壹 、② 、3为6的因子。本题须要编写程序,找出任意两正整数m和n之间的有着完数。

1.分解质因数(伍分)

标题内容:
每一个非素数(合数)都足以写成多少个素数(也可称为质数)相乘的花样,那多少个素数就都号称这么些合数的质因数。比如,6能够被演说为2×3,而24得以被演讲为2x2x2x3。

明天,你的次第要读入3个[2,100000]界定内的整数,然后输出它的质因数分解式;当读到的正是素数时,输出它本人。

唤醒:能够用二个函数来判定某数是不是是素数。

输入格式:
多少个整数,范围在[2,100000]内。

输出格式:
形如:
n=axbxcxd

n=n
全体的标志之间都并未空格,x是小写字母x。abcd那样的数字肯定是从小到大排列的。

输入样例:
18

输出样例:
18=2x3x3
时间限制:500ms内部存款和储蓄器限制:33000kb

#include <stdio.h>

int main(int argc, char **argv) {
    int n;
    scanf("%d",&n);
    printf("%d=",n);
    for(int i=2;i<=n;++i){
        if(n%i==0){
            n/=i;
            if(n!=1){
                printf("%dx",i);
                i--;
            }
            else{
                printf("%d",i);
                break;
            }

        }
    }    
    return 0;
}

1分解质因数(六分)

题目内容:
各类非素数(合数)都足以写成多少个素数(也可称之为质数)相乘的方式,那多少个素数就都号称这些合数的质因数。比如,6能够被解释为2×3,而24得以被演说为2x2x2x3。
方今,你的先后要读入贰个[【4858.com】第④周编制程序演习,第9周编制程序题。2,100000]界定内的平头,然后输出它的质因数分解式;当读到的正是素数时,输出它自身。

输入格式:
2个平头,范围在[2,100000]内。

输出格式:
形如:
n=axbxcxd

n=n
装有的记号之间都没有空格,x是小写字母x。

输入样例:
18

输出样例:
18=2x3x3
时光限定:500ms内部存款和储蓄器限制:3三千kb

输入格式:

输入在一行中付出二个正整数m和n(1<m≤n≤一千0),中间以空格分隔。

输入格式:

输入在一行中提交3个正整数m和n(1<m≤n≤一千0),中间以空格分隔。

2.完数(5分)

4858.com ,标题内容:
三个正整数的因数是拥有能够整除它的正整数。而三个数若是恰巧等于除它本身外的因子之和,这几个数就称为完数。例如6=1+2+3(6的因数是1,2,3)。

以往,你要写贰个顺序,读入八个正整数n和m(1<=n<m<一千),输出[n,m]限制内有所的完数。

晋升:可以写二个函数来判定有个别数是还是不是是完数。

输入格式:
八个正整数,以空格分隔。

出口格式:
其间全部的完数,以空格分隔,最终三个数字背后没有空格。即使没有,则输出一行文字:
NIL
(输出NIL八个大写字母加回车)。

输入样例:
1 10

出口样例:
6
光阴限制:500ms内部存款和储蓄器限制:3三千kb

#include <stdio.h>

int IsWanshu(int n){
    int sum=0;
    for(int i=1;i<n;i++){
        if(n%i==0){
            sum+=i;
        }
    }
    if(sum==n){
        return 1;
    }
    else{
        return 0;
    }
}

int main(int argc, char **argv) {
    int n,m;
    int count=0;
    scanf("%d%d",&n,&m);
    for(int i=n;i<=m;++i){
        if(IsWanshu(i)==1){
            if(count==0){//最后一个不好判断,第一个好判断
                printf("%d",i);
                count++;
            }
            else{
                printf(" %d",i);
                count++;
            }
        }
    }
    if(count==0){
        printf("NIL");
    }
    return 0;
}

自己的答案:

package hello;

import java.util.Scanner;

public class Main {
    public static boolean isPrime(int k)
    {
        boolean isPrime = true;
        if (k==2||k==3)
        {
            return true;
        }
        if (k%2 == 0)
        {
            return false;
        }
        for (int i=3;i<=Math.sqrt(k);i+=2)
        {
            if (k%i==0)
            {
                isPrime=false;
                break;
            }
        }
        return isPrime;
    }

    public static void main(String[] args) {
        Scanner in = new Scanner(System.in); 
        int number = in.nextInt();
        System.out.print(number+"=");
        int j=2;
        if (isPrime(number))
        {
            System.out.print(number);
        }
        else
        {
            while (number>1)
            {
                if (number%j==0)
                {
                    System.out.print(j+"x");
                    if (isPrime(number/j))
                    {
                        System.out.print(number/j);
                        break;
                    }
                    else
                    {
                        number = number/j;
                    }
                }
                else
                {
                    j++;
                }               
            }
        }
    }
}

出口格式:

逐行输出给定范围内各样完数的因数累加格局的分解式,各类完数占一行,格式为“完数
= 因子1 + 因子2 + … +
因子k”,个中完数和因子均按递增顺序给出。若区间内没有完数,则输出“None”。

出口格式:

逐行输出给定范围内各种完数的因子累加格局的分解式,每一种完数占一行,格式为“完数
= 因子1 + 因子2 + … +
因子k”,在那之中完数和因子均按递增顺序给出。若区间内没有完数,则输出“None”。

2完数(5分)

题材内容:
三个正整数的因子是具有能够整除它的正整数。而四个数假诺刚好等于除它自个儿外的因子之和,那一个数就叫做完数。例如6=1+2+3(6的因子是1,2,3)。
当今,你要写叁个顺序,读入多少个正整数n和m(1<=n<m<一千),输出[n,m]限定内有着的完数。
提醒:能够写贰个函数来判断某些数是否是完数。

输入格式:
五个正整数,以空格分隔。

输出格式:
里头全数的完数,以空格分隔,最终二个数字背后没有空格。即使没有,则输出3个空行。

输入样例:
1 10

出口样例:
6
光阴限制:500ms内存限制:3两千kb

输入样例:

2 30

输入样例:

2 30

自家的答案:

package hello;

import java.util.Scanner;

public class Main {
    public static boolean iswan(int k)
    {
        boolean iswan = false;
        int sum = 0;
        for (int i=1;i<=k/2;i++)
        {
            if (k%i==0)
            {
                sum += i;
            }
        }
        if (sum == k)
        {
            iswan = true;
        }
        return iswan;
    }

    public static void main(String[] args) {
        Scanner in = new Scanner(System.in); 
        int n = in.nextInt();
        int m = in.nextInt();
        int count = 0;
        for (int i =n; i<=m; i++)
        {
            if (iswan(i))
            {
                count++;
                if (count == 1)
                {
                    System.out.print(i);
                }
                else
                {
                    System.out.print(" "+i);
                }               
            }
        }
        if (count == 0)
        {
            System.out.println();
        }
    }
}

输出样例:

6 = 1 + 2 + 3
28 = 1 + 2 + 4 + 7 + 14

 

 1 #include <stdio.h>
 2 
 3 int isPerfect(int num);
 4 void output(int num);
 5 
 6 int main(int argc, char const *argv[])
 7 {
 8     int m, n;
 9     int i;
10     int count = 0;
11 
12     scanf("%d %d", &m, &n);
13 
14     for ( i = m; i <= n; i++ ) {
15         int num = i;
16         if ( isPerfect( num ) ) {
17             count++;
18             output(num);
19         }
20     }
21     if ( count == 0 ) {
22         printf("None\n");
23     }
24     return 0;
25 }
26 
27 int isPerfect(int num)
28 {
29     int nSum = 0;
30     int ret = 0;
31     for ( int i = 1; i < num; i++ ) {
32         if ( num % i == 0 ) {
33             nSum += i;
34         }
35         // 判断一个数是不是完数 要把它所有的因子都加起来
36         if ( nSum == num && i + 1 == num) {
37             ret = 1;
38         }
39     }
40     return ret;
41 }
42 
43 void output(int num)
44 {
45     int nSum = 0;
46     printf("%d = ", num);
47     for ( int i = 1; i < num; i++ ) {
48         if ( num % i == 0 ) {
49             nSum += i;
50             printf("%d", i);
51             if ( nSum == num ) {
52                 break;
53             } else {
54                 printf(" + ");
55             }
56         }
57     }
58     printf("\n");
59 }

 

输出样例:

6 = 1 + 2 + 328 = 1 + 2 + 4 + 7 + 14

 1 #include <stdio.h> 2  3 int isPerfect(int num); 4 void output(int num); 5  6 int main(int argc, char const *argv[]) 7 { 8     int m, n; 9     int i;10     int count = 0;11 12     scanf("%d %d", &m, &n);13 14     for ( i = m; i <= n; i++ ) {15         int num = i;16         if ( isPerfect {17             count++;18             output;19         }20     }21     if ( count == 0 ) {22         printf("None\n");23     }24     return 0;25 }26 27 int isPerfect(int num)28 {29     int nSum = 0;30     int ret = 0;31     for ( int i = 1; i < num; i++ ) {32         if ( num % i == 0 ) {33             nSum += i;34         }35         // 判断一个数是不是完数 要把它所有的因子都加起来36         if ( nSum == num && i + 1 == num) {37             ret = 1;38         }39     }40     return ret;41 }42 43 void output(int num)44 {45     int nSum = 0;46     printf("%d = ", num);47     for ( int i = 1; i < num; i++ ) {48         if ( num % i == 0 ) {49             nSum += i;50             printf("%d", i);51             if ( nSum == num ) {52                 break;53             } else {54                 printf(" + ");55             }56         }57     }58     printf("\n");59 }

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图
Copyright @ 2010-2019 美高梅手机版4858 版权所有