1. 判断素数
#include<bits/stdc++.h>
bool IsPrime(int x){
if(x==1) return false;
if(x==2||x==3) return true;
if(x%6!=1&&x%6!=5) return false;
for(int i=5;i*i<=x;i+=6){
if(x%i==0||x%(i+2)==0) return false;
}
return true;
}
int main(){
int x;scanf("%d",&x);
if(IsPrime(x)) printf("%d is a prime number",x);
else printf("%d is not a prime number",x);
return 0;
}
#include <bits/stdc++.h>
using namespace std;
void check(int a)
{
for(int i=2;i<=sqrt(a);i++)
{
if(a%i==0)
{
cout<<"no"<<endl;
return ;
}
}
cout<<"yes"<<endl;
}
int main(){
int n;
cin>>n;
if(n==1)
cout<<"no"<<endl;
else if(n==2||n==3)
cout<<"yes"<<endl;
else
check(n);
return 0;
}
素数:除了1和它本身,没有其他的因数。1不是素数。
2.(10)用递归,将不确定位数的整数n转成字符串
#include<bits/stdc++.h>
void Conv(int n){
if(n){
Conv(n/10);
char c=n%10+'0';
putchar(c);
}
}
int main(){
int n;scanf("%d",&n);
Conv(n);
return 0;
}
1.最大公因数和最小公倍数
#include <bits/stdc++.h>
using namespace std;
int gcd(int a,int b){
return b==0?a:gcd(b,a%b);
}
int main(){
int m,n;
cin>>m>>n;
int g=gcd(m,n);
int lcm=m*n/g;
cout<<g<<endl<<lcm<<endl;
return 0;
}
最大公因数:用辗转相除法,1.a%b得余数c 2.若c=0.则b是最大公因数 3.若c不等于0,则继续执行1,直到c为0,b即是最大公因数;
27%15=12,15%12=3,12%3=0,所以3是最大公因数;
最小公倍数:两数相乘除以它们的最大公因数
2.水仙花数
#include <bits/stdc++.h>
using namespace std;
bool check(int x){
int num=x;
int sum=0;
while(x){
int a=x%10;
sum+=a*a*a;
x/=10;
}
return num==sum;
}
int main(){
for(int i=100;i<=999;++i){
if(check(i))
printf("%d\n",i);
}
return 0;
}
3.1000以内的完数
#include <bits/stdc++.h>
using namespace std;
bool check(int num,int *arr,int &cnt){
int sum=1;
cnt=0;
arr[cnt++]=1;
for(int i=2;i*i<=num;++i){
if(num%i==0){
arr[cnt++]=i;
arr[cnt++]=num/i;
sum+=i+num/i;
}
}
return num==sum;
}
int main(){
int arr[105];
int cnt=0;
for(int i=1;i<=1000;++i){
if(check(i,arr,cnt)){
printf("%d,its factors are ",i);
for(int i=0;i<cnt;++i) printf("%d%c",arr[i],i==cnt-1?'\n':' ');
}
}
return 0;
}