菜鸟编程学习(python&C--009)

2018-10-14  本文已影响0人  就如此简单

Python 练习实例14(Python 100例)

题目:将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5。

程序分析:对n进行分解质因数,应先找到一个最小的质数k,然后按下述步骤完成:

(1)如果这个质数恰等于n,则说明分解质因数的过程已经结束,打印出即可。

(2)如果n<>k,但n能被k整除,则应打印出k的值,并用n除以k的商,作为新的正整数你n,重复执行第一步。

(3)如果n不能被k整除,则用k+1作为k的值,重复执行第一步。

程序代码:

s=int(raw_input('number:'))

print "%d=" %(s),

for i in range(2,s/2):

    while(s%i==0):

        if(s%i==0)and(s!=i):

            s=s/i

            print "%d*" %(i),

        elif(s==i):

            print s

            break

        else:

            break


题目56  阶乘因式分解(一)   ( 南阳理工oj )

时间限制:3000 ms  |  内存限制:65535 KB

难度:2

描述

给定两个数m,n,其中m是一个素数。将n(0<=n<=10000)的阶乘分解质因数,求其中有多少个m。

输入

第一行是一个整数s

随后的s行, 每行有两个整数n,m。

输出

输出m的个数。

样例输入

2

100 5

16 2

样例输出

24

15

程序代码:

方法一:

#include<stdio.h>

int main()

{

        int k,sum;

        scanf("%d",&k);

        while(k--)

        {

                int m,n;

                scanf("%d,%d",&m,&n);

                sum=0;

                while(1)

                {

                            sum=sum+m/n;

                            m=m/n;

                            if(m==0)

                                    break;

                }

                printf("%d\n",sum);

        }

}

方法二:

#include <stdio.h>

int main()

{

    int i,j,sum=0,m,n,k,t,s=0;

    scanf("%d",&t);

    while(t--)

    {

        sum=0;

        scanf("%d,%d",&n,&m);

        for (j=n;j>0;j--)

        {

            for (i=2;i<=j/2;i++)

            {

                k=j;

                while(k%i==0)

                {

                if(k%i==0)

                     {

                        k=k/i;

                        if ((i==m))

                           {

                               s=s+1;

                            }

                    }

                }

             }

      sum=sum+s;

        s=0;

        }

        printf("%2d\n",sum+1);

    }

}


39题     (C 语言经典100例)

题目:有一个已经排好序的数组。现输入一个数,要求按原来的规律将它插入数组中。

程序分析:首先判断此数是否大于最后一个数,然后再考虑插入中间的数的情况,插入后此元素之后的数,依次后移一个位置。

#include<stdio.h>

int main()

{

    int k,i,j,a[10]={1,3,4,5,6,7,8,9,11};

    scanf("%d",&k);

    for (i=0;i<10;i++)

    {

        printf("%3d",a[i]);

        if ((k>a[i])&&(k<=a[i+1]))

        {

                for(j=9;j>i;j--)

                {

                        a[j]=a[j-1];

                        a[i]=k;

                }

        }

    }printf("\n");

}


上一篇下一篇

猜你喜欢

热点阅读