- 问答
- 4 年前 @
我的程序总是没有输出,是不是哪里出错了?
【问题描述】
将一个正整数分解质因数,即分解成若干质数的乘积,若得到的质因数的个数也是一个质数,则称这个数为“幸运数”。例如12=2*2*3,它有3个质因数分别是2、2、3,而3为质数,所以12是一个幸运数。
编程求出不大于n的所有幸运数。
【输入格式】
一行一个正整数n,2<=n<100000。
【输出格式】
若干行,每行一个幸运数。要求从小到大顺序输出。
3 条评论
-
陈烨@吴江区实验初中 (陈烨1) LV 8 @ 4 年前
#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;
} -
4 年前@
#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;
} -
4 年前@
- 1