C++编程!!!!急,在线等!!!求10~200内的的所有反素数并按每行5个的形式输出。

求10~200内的的所有反素数并按每行5个的形式输出。
对于任意大于2的正整数x,若当0<i<x时都有g(i)<g(x),则称x为反素数(其中g(i)代表i的约数个数,g(x)代表x的约数个数)。例如:由于g(1)=1、g(2)=2、g(3)=2、g(4)=3、g(5)=2、g(6)=4、g(7)=2、g(8)=4,因此4和6是反素数,3、4、5、7、8则不是反素数。
【编程要求】
1)编写函数int fun(int *a)。函数功能:将10~200范围内的所有反素数依次存储到a指向的数组中,函数返回反素数的个数。
算法提示:编写函数int g(int n)求一个整数n的约数的个数。
2)编写函数main()。函数功能:声明一个一维数组a,,用数组a作实参调用fun函数,按每行5个数的形式输出a数组中的数据到屏幕。
【测试数据与运行结果】
屏幕输出:
12 24 36 48 60
180

这是我写的,不知道哪里不对!!!求解!!!
#include<iostream>
using namespace std;
class FSS
{
private:
int *a;
int begin;
int end;
int count;
public:
FSS(int _begin,int _end)
{
begin=_begin;
end=_end;
count=0;
}
int g(int n)
{

for(int i=1;i<=n;i++)
{
if(n%i==0)
{
count++;
}
}
return count;
}
int fun(int *a)
{
int m=0;
for(int n=begin;n<end;n++)
{
for(int i=n-1;i>0;i--)
{
if(g(n)>g(i))
{
a[m]=n;
m++;
}
}
}
return m;
}
};
int main()
{
int a[7];
FSS A(2,1000);
A.fun(a);
for(int p=0;p<7;p++)
{
cout<<a[p]<<"\t";
if((p+1)%5==0)
{
cout<<endl;
}
}
return 0;
}
回答我啊TUT,啊婆主改这道题两天了QAQ,自我感觉十分完美啊啊啊啊啊啊啊艹!!!!

你那结果是错的吧,120也是反素数追问

哦,对,少复制了一个!但是我的结果是负很多很多的东西。。。。大神求解!!!!

追答 int g(int n)
{
count=0;//每次计数前记得先置为0
for(int i=1;i<=n;i++)
{
if(n%i==0)
{
count++;
}
}
return count;
}
int fun(int *a)
{
int m=0;
for(int n=begin;n<end;n++)
{
for(int i=n-1;i>0;i--)
{
if(g(n)<=g(i))//是所有的满足g(i)<g(x)才是反素数
{
break;
}
}
if(i==0)//如果i!=0则表示其中存在i使得g(i)>g(x)则不是反素数
{
  a[m]=n;
  m++;
}
}
return m;
}

追问

学霸么么哒!!!!!

温馨提示:内容为网友见解,仅供参考
无其他回答
相似回答