例子1:判断质数
#include <iostream>
using namespace std;
int main() {
int n;
cin >> n;
bool is_prime=true;
if(n==1){
is_prime=false;
}
for(int i=2;i*i<=n;i++){
if(n%i==0){
is_prime=false;
break;
}
}
if(is_prime){
cout<<"Yes"<<endl;
}else{
cout<<"No"<<endl;
}
return 0;
}
例子2:求因数的个数
#include <iostream>
using namespace std;
int main() {
int n, cnt = 1;
cin >> n;
for(int i=2;i*i<=n;i++){
if(n%i==0){
int temp=0;
while(n%i==0){
n/=i;
temp++;
}
cnt*=temp+1;
}
}
if(n!=1){
cnt*=2;
}
cout<<cnt<<endl;
return 0;
}
例子3:求最大公因数与最小公倍数
#include <iostream>
using namespace std;
int gcd(int a,int b){
if(b==0){
return a;
}
return gcd(b,a%b);
}
int main() {
int n, m;
cin >> n >> m;
int GCD=gcd(n,m);
cout<<GCD<<endl;
cout<<n/GCD*m<<endl;
return 0;
}
例子4:实现阶乘取模
#include <iostream>
using namespace std;
const int mod = 1000000007;
int fac[1000005];
int main() {
int n;
cin >> n;
fac[0]=1;
for(int i=1;i<=n;i++){
fac[i]=1LL*fac[i-1]*i%mod;
}
cout<<fac[n]<<endl;
return 0;
}
例子5:实现进制转换
#include <iostream>
#include <string>
using namespace std;
int digit[105], cnt;
string s;
int main() {
int a, b, now = 0;
cin >> s >> a >> b;
for(int i=0;i<s.size();i++){
now=now*a+(s[i]-'0');
}
while(now){
digit[cnt++]=now%b;
now/=b;
}
for(int i=cnt-1;i>=0;i--){
cout<<digit[i];
}
return 0;
}
例子6:互质数
思路:
#include<iostream>
#include<cstdio>
using namespace std;
bool panduanhz(int x,int y) //定义新的函数
{ //用辗转相除法判断两个数是否互质。(互质就是两个正整数只有一个公因数1)
int t;
while(x>0)
{
t=y%x;
y=x;
x=t;
}
if(y==1) return 1;
else return 0;
}
int main()
{
freopen("frac.in","r",stdin);
freopen("frac.out","w",stdout);
int n;
cin>>n;
int a[600],b[600];
int sum=0;
for(int i=0;i<n;i++)
{
cin>>a[i];
b[i]=a[i]; //将数组进行拷贝
}
for(int j=0;j<n;j++)
{
for(int k=j+1;k<n;k++)
{
if(panduanhz(a[j],b[k]))
{
sum++; //如果互质就加1
}
}
}
cout<<sum;
return 0;
}
例子7:数字游戏
思路:
/*#include<bits/stdc++.h>
using namespace std;
char s[80];
int sum;
int main() {
freopen("mod.in","r",stdin);
freopen("mod.out","w",stdout);
cin>>s;
for(int i=0;i<8;i++)
{
if(s[i]=='1')
sum++;
}
cout<<sum<<endl;
return 0;
}*/
#include <iostream>
#include <cstdio>
using namespace std;
int main() {
freopen("mod.in", "r", stdin);
freopen("mod.out", "w", stdout);
long long n, m, p;
cin >> n >> m >> p;
for (int i = 1; i <= m; i++) {
char op;
int k;
cin >> op >> k;
if (op == '+') {
n = (n + k % p) % p;
} else if (op == '-') {
n = (n - k % p + p) % p;
} else if (op == '*') {
n = (n * (k % p)) % p;
}
}
cout << n;
return 0;
}