幸运数判断

我的程序总是没有输出,是不是哪里出错了?

【问题描述】
将一个正整数分解质因数,即分解成若干质数的乘积,若得到的质因数的个数也是一个质数,则称这个数为“幸运数”。例如12=2*2*3,它有3个质因数分别是2、2、3,而3为质数,所以12是一个幸运数。
编程求出不大于n的所有幸运数。
【输入格式】
一行一个正整数n,2<=n<100000。
【输出格式】
若干行,每行一个幸运数。要求从小到大顺序输出。

3 条评论

  • #include <iostream>
    using namespace std;
    int prime(int n);
    int zys(int n);
    int main()
    {
    int x;cin>>x;
    for(int j=1;j<=x;j++)
    if(prime(zys(j))==1)
    cout<<j<<endl;
    return 0;
    }

    int zys(int n)
    {
    int n2,cnt=0;
    n2=n;
    for(int i=2;i*i<=n2;i++)

    {
    while(n2%i==0)
    {
    n2=n2/i;
    cnt++;

    }
    }
    if(n2!=1)
    cnt++;

    return cnt;
    }

    int prime(int n)
    {
    int i;
    for(i=2;i<n;i++)
    {
    if(n%i==0)
    break;
    }
    return i==n;
    }

  • #include <iostream>
    using namespace std;

    int zxc(int j); //质因数
    int zhishu(int xx);//判断质数

    int main()
    {
    int n;
    cin>>n;
    int cnt;
    for(int j=2;j<n;j++)
    {
    int xx=j;
    cnt=1;
    while(zhishu(xx)==0)
    {
    cnt++;
    xx=xx/zxc(xx);
    }
    if(zhishu(cnt)==1)
    cout<<j<<endl;
    }
    }

    int zxc(int j)
    {
    int n=0;
    while(j>1)
    {
    for(int i=2;i<=j;i++)
    {
    if(j%i==0)
    {

    j=j/i;
    return i;//输出因子
    }

    }

    }
    return 0;
    }

    int zhishu(int xx)
    {
    for(int i=2;i<=xx;i++)//判断质数
    {
    if(xx%i==0)
    return 0;
    }
    return 1;
    }

  • #include <iostream>
    using namespace std;
    
    int zxc(int j); //质因数 
    int zhishu(int xx);//判断质数 
    
    int main()
    {
        int n;
        cin>>n;
        int cnt;
        for(int j=2;j<n;j++)
        {
            int xx=j;
            while(zxc(xx)>1)
            {
                cnt=0;
                if(zxc(xx)>1)
                {
                    cnt++;
                    xx=zxc(xx);
                }
            }
            if(zhishu(cnt)==1)
                cout<<j<<endl;
        }
    }
    
    int zxc(int j)
    {
        int n=0;
        while(j>1)
        {
            for(int i=2;i<=j;i++)
            {
                if(j%i==0)
                {
                    j=j/i;
                    return i;//输出因子
                }   
            }   
        }
        return 0;
    }
    
    int zhishu(int xx)
    {
        for(int i=2;i<=xx;i++)//判断质数 
        {
            if(xx%i==0)
            return 0;
        }
        return 1;
    }
    
  • 1