1.找出10000以内的所有质数
这步需要注意的是不能把这个函数放到循环里面,否则一定会运行超时
2.判断是否是质数
3.输出
#include<iostream>
using namespace std;
#include<cmath>
int prime[10001];
int isPrime(int n)
{
for(int i=2; i<=sqrt(n); i++) //注意等于号
{
if(n%i==0)
return 0;
}
return 1;
}
void getPrime()
{
int num=0;
for(int i=2; i<=10000; i++)
{
int flag=0;
for(int j=2; j<=sqrt(i); j++)
{
if(i%j==0)
flag=1;
}
if(flag==0)
{
prime[num++]=i;
//printf("%d ",prime[num-1]);
}
}
// printf("\n");
}
void Split(int n)
{
int i=0;
while(n!=1)
{
int t=n/prime[i];
if(t*prime[i]==n)
{
n/=prime[i];
if(n!=1)
printf("%d*",prime[i]);
else
printf("%d",prime[i]);
}
else
i++;
}
cout<<endl;
}
int main()
{
int a,b;
cin>>a>>b;
getPrime();
for(int i=a; i<=b; i++)
{
if(isPrime(i))
printf("%d=%d\n",i,i);
else
{
printf("%d=",i);
Split(i);
}
}
return 0;
}