C++程序设计实践指导1.13自然数集中找合数改写要求实现

时间:2023-03-09 03:55:41
C++程序设计实践指导1.13自然数集中找合数改写要求实现

改写要求1:用单链表实现

改写要求2:析构函数中依次将链表结点删除

#include <cstdlib>
#include <iostream> using namespace std;
struct LinkNode
{
int data;
LinkNode* next;
};
class NOPRIME
{
friend struct LinkNode;
LinkNode* Head;
int n;
public:
NOPRIME(int n1)
{
n=n1;
}
void creat();
int yes(int x)
{
for(int i=;i<x/;i++)
if(x%i==)
return ;
return ;
}
void Search();
void print()
{
LinkNode* p=Head->next;
while(p)
{
cout<<p->data<<'\t';
p=p->next;
}
cout<<endl;
}
~NOPRIME()
{
LinkNode* p=Head;
while(Head)
{
p=Head;
Head=Head->next;
delete(p);
}
}
}; void NOPRIME::creat()
{
Head=new LinkNode;
Head->next=NULL;
LinkNode* p=Head;
int i=n;
while(i)
{
LinkNode* newLinkNode=new LinkNode;
newLinkNode->next=NULL;
p->next=newLinkNode;
p=newLinkNode;
i--;
}
} void NOPRIME::Search()
{
LinkNode* p;
int i,j,t=;
for(i=;;i++)
{
t=;
p=Head->next;
for(j=i;j<i+n;j++)
{
p->data=j;
p=p->next;
if(yes(j)==)
t=;
}
if(t==)
break;
}
}
int main(int argc, char *argv[])
{
NOPRIME num();
num.creat();
num.Search();
num.print();
return EXIT_SUCCESS;
}