菜鸟编程学习(python&C--009)
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");
}