自然数中,如果除了1和它本身,再也没有其他的自然数两数相乘得到这个数,那么我们说这个数就是质数,如5,只有有1*5=5。请你写一段程序,输入一个自然数n,判断它是否为质数。
代码部分:
#include<iostream>// judge
using namespace std;
int judge(int n);
int main()
{
int n;
cin>>n;
cout<<judge(n);
return 0;
}
int judge(int n)
{
for(int i=2;i<n;i++)
{
if(n%i==0)
{
return 0;
}
}
return 1;
}
代码升级:
#include<iostream>// judge
using namespace std;
int judge(int n);
int main()
{
int n;
cin>>n;
cout<<judge(n);
return 0;
}
int judge(int n)
{
if(n<2) return 0;//升级1,
for(int i=2;i*i<=n;i++)//升级2 //i*i<=n//优化
{
if(n%i==0)
{
return 0;
}
}
return 1;
}
最大公约数
自然数中,如果两个数a,b分别除以同一个数c都能刚好除尽没有余数,则这两个数a,b的最大公约数是c。请思考如何用程序求两个数的最大公约数。
#include<iostream>
using namespace std;
int judge(int a,int b);
int main()
{
int a=0,b=0;
cin>>a>>b;
cout<<judge(a,b);
return 0;
}
int judge(int a,int b)
{
int max=0;
int common=0;
if(a>b)
{
max=a;
}
else
{
max=b;
}
for(int i=2;i<=max;i++)
{
if(a%i==0&&b%i==0)
{
common=i;
}
}
return common;
}
升级:
#include<iostream>
using namespace std;
int judge(int a,int b);
int main()
{
int a=0,b=0;
cin>>a>>b;
cout<<judge(a,b);
return 0;
}
int judge(int a,int b)
{
int max=0;
int common=0;
if(a>b)
{
max=a;
}
else
{
max=b;
}
for(;max>=1;max--)//升级1
{
if(a%max==0&&b%max==0)
{
return max;
}
}
}