**
C++简单的小题目(分解质因数&阶乘&最大公因数)
**
Q1(分解质因数):
这题我们可以先设一个zyz(a,b)的函数,于是很简单的可以求出:
#include<bits/stdc++.h>
using namespace std;
int a[1000];
int i=0;
void zyz(int n,int p)
{
if(n==1)
{
return;
}
else if(n>1)
{
if(n%p==0)
{
a[i] = p;i++;zyz(n/p,p);
}else
{
zyz(n,p+1);
}
}
}
int main()
{
int n;
cin>>n;
cout<<n<<"=";zyz(n,2);
cout<<a[0];
for(int j =1;j<i;j++)
{
cout<<"*"<<a[j];
}
return 0;
}
//ACACAC!
Q2:(求 n!=?)
不多说了,直接上代码
#include <bits/stdc++.h>
using namespace std;
int jc(long n)
{
long ans;
if(n==1)ans=1;
else
ans=n*jc(n-1);
return ans;
}
int main()
{
long n;cin>>n;cout<<jc(n);
return 0;
}
//ACACAC!
同样使用了一个函数jc(n)。
Q3(最大公因数):
此题提供2种算法,
W1:用do…while()循环求解:
#include <bits/stdc++.h>
#include <cstring>
#include <iostream>
#include <iomanip>
#include <cmath>
#include <algorithm>
using namespace std;
int main()
{
int m,n,r;
cin>>m>>n;
do
{
r=m%n;
m=n;
n=r;
}
while(r!=0);
cout<<m<<endl;
return 0;
}
W2:我认为最无赖有意思的小函数:
#include<bits/stdc++.h>
using namespace std;
int gcd(int a,int b)
{
return b?gcd(b,a%b):a;
}
int main()
{
int n,m;cin>>n>>m;
cout<<"gcd="<<gcd(n,m);
return 0;
}
//ACACAC!
好啦,今天就分享这么多啦,谢谢大家滴支持!