素数(主函数懒得写喽)
算法:若从2到根号x都能被x整除,x就是素数(除了0和1)
#include<cmath>
int prime(int x)
{
int k=sqrt(double(x)); //这么写规范,不易出错
int i; //注意,if后面要用到i,不可以int i写在for里面哦!
for(i=2;i<=k;i++)
if(x%i==0) break;
if(i>k&&x!=0&&x!=1) cout<<"是素数"<<endl; //素数不可以是0和1,一定要注意
else cout<<"不是素数"<<endl;
return 0;
}
举个例子,输出300到500所有素数,每行输入十个
#include<cmath>
int main()
{
int m,k,i,n =0;
for(m=301;m<=500;m+=2) //因为素数只可能是奇数嘛!!
{
k = sqrt(double(m));
for(i=2;i<=k;i++)
if(m%i==0) break;
if(i>k) //这里不用判断0和1哦
{
cout<<m<<" ";
n+=1; //计数器的存在,到10的倍数换行
if(n%10 ==0)
cout<<endl;
}
}
return 0;
}
举个例子,偶数(6到100)分解成素数的和
#include<cmath>
bool prime(int x)
{
int k,i;
k=sqrt(double(x));
for(i=2;i<=k;i++)
if(x%i==0) break;
if(i>k&&x!=0&&x!=1) return (true); //是素数返回true
else return(false); //不是素数返回false
}
int main()
{
int a,b,m;
for(m=6;m<=100;m+=2)
for(a=2;a<=m/2;a++)
{
if(prime(a))
{
b=m-a;
if(prime(b))
{
cout<<m<<"="<<a<<"+"<<b<<'\n';
}
}
}
return 0;
}