一、将正整数分解成质因数。
例如:将一个大于一的正整数分解成质因数。
输入90,打印出90=2x3x3x5。
题目分析:为了将n分解成质因数,应先找到一个最小的质数k,然后按照步骤完成。
1、如果这个质数恰好等于n,则说明分解质因数的过程已经结束,输出即可。
2、如果n!=k,但是能被k整除,则应该打印出k的值,并用n除以k的商作为新的正整数n,重复执行第1步。
3、如果n不能被k整除,则用k+1作为新的k,重复执行第1步。
#include<iostream.h>
void main()
{
int n,k=2;
cin>>n;
cout<<n<<"=";
while(n!=k)
{
if(n%k==0)
{
cout<<k<<"*";
n=n/k;
}
else
k++;
}
cout<<n;
}
do-while循环
do-while循环语句是实现“直到”型循环结构的语句。
一般形式是:
do
语句;
while(表达式);
语义是:先执行循环语句一次,在判断表达式的值,若为真(非0)则继续循环,否则终止循环。
例如:用do-while计算前n项的平方和。
#include<iostream.h>
void main()
{
int n,i=1;
int sum=0;
cin>>n;
do
{
sum=sum+i*i;
i++;
}while(i<=n);
cout<<sum;
}
使用规则
在if或者while语句中,表达式后不能加分号,而在do-while语句中表达式后面必须加分号。
例题一:从键盘上输入一个整数,计算其位数,例如:输入12345,输出结果是5;输入-123,输出结果是3,输入0,输出结果是0;
题目分析:一个整数由多位数字组成,计算位数的过程需要一位一位的进行,因此是个循环过程,循环次数由位数本身决定,由于需要计算的整数需要输入,所以无法知道循环次数,但任何整数需要至少一位,也就是说至少需要一次循环,因此可以选择do-while循环。
#include<iostream.h>
void main()
{
int n;
int count=0;
cin>>n;
if(n<0)
n=-n;
do
{
n=n/10;
count++;
}while(n>0);
cout<<count;
}
例题 二、用格里高利公式求pai的值。要求精确到最后一项的绝对值小于1e-5.
公式为:pai/4=1-1/3+1/5-1/7+……
#include<iostream.h>
#include<math.h>
void main()
{
int a=1,plag=1;
double stem=0,pi=0;
do{
stem=plag*1.0/a;
pi=pi+stem;
a=a+2;
plag=-plag;
}while(fabs(stem)>1e-5);
pi=pi*4;
cout<<pi;
}