0
点赞
收藏
分享

微信扫一扫

每日一练:分解质因数

柠檬果然酸 2022-03-11 阅读 67

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;
}
举报

相关推荐

0 条评论