素数筛选法<单向链表实现>

 

#include <iostream>

using namespace std;

struct note
{
    int data;
    note *next;
};

class listprime
{
private:
    note *head;
public:
    listprime(int n);
    void Delete( note *p);
    void scan();
    void print();
    ~listprime();
};
listprime::~listprime()		//清理
{
    note *p=head;
    while(p)
    {
        note *q=p;
        p=p->next;
        delete q;

    }
    head =NULL;
}
listprime::listprime(int n)        //建立空链表
{
    head=new note;
    head->next=NULL;
    note *t;
    for(int i=0;i<n;i++)
    {
        t=new note;
        t->data=n-i;
        t->next=head->next;
        head->next=t;

    }
}

void listprime::print()				//输出
{
    note *hp=new note;
    hp=head->next;
    while(hp)
    {
        if(hp->data!=1)
            cout<<hp->data<<" ";
        hp=hp->next;


    }
    cout<<endl;
}
void listprime::scan()
{
    note *p=new note;
    p=head->next->next;
    while(p)
    {
        Delete(p);
        p=p->next;
    }
}
void listprime::Delete( note *p)			//筛选
{
    note *q=p;
    note *t=NULL;
    while(q->next)
    {
        if(p->next&& (q->next->data)%(p->data)==0)
        {
            t=q->next;
            q->next=q->next->next;
            delete t;

        }
        else
            q=q->next;

    }
}

int main()
{
    int n;
    cin>>n;
    listprime prime(n);
    prime.scan();
    prime.print();

    return 0;
}


 

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
<span style="color:rgb(0,0,0);font-family:'宋体';font-size:large;">要求:将程序代码复制粘贴到一个word文档中上传。</span><span style="color:rgb(0,0,0);font-family:'宋体';font-size:large;">程序如果是正确的,请在word文档中附上最后运行结果的截图。</span><p><span style="color:rgb(0,0,0);font-family:'宋体';font-size:large;">1、必做题</span></p><p> 本题要求实现一个判断素数的简单函数,以及利用该函数判断给定区间整数是否是素数,并按一行5个进行输出的函数。</p><p> 素数:只能被1和自身整除的正整数,1不是素数,2是素数</p><p> 函数接口定义:</p><p> int IsPrime(int x);</p><p> void PrintPrime(int m,int n);</p><p> 其中,函数IsPrime,当x是素数时返回1,否则返回0;函数PrintPrime输出区间[m,n]内的所有素数,按一行5个进行输出,同时要求输出的每列数据左对齐,若在此区间内没有素数,则输出“在此区间不存在素数”的提示信息。</p><p> 要求:main函数中输入两个正整数m和n,调用函数PrintPrime输出结果,函数PrintPrime需调用IsPrime函数来判定区间[m,n]内整数是否为素数。</p><p><br /></p><p>2、选做题</p><p> 有1对兔子,从第3个月开始每个月生一对兔子,生下来的兔子从第3个月开始也是每个月生一对,求第n个月兔子有几对?</p><p> 函数接口定义:</p><p> int rabbit(int n);</p><p> 要求:采用递归调用的方式求解兔子问题,在main函数中输入n,调用rabbit函数求出结果,在main函数中输出结果。</p><p> 输入样例1:</p><p> 6</p><p> 输出样例1:</p><p> 8</p><p> 输入样例2:</p><p> 12</p><p> 输出样例2:</p><p> 144</p><p><br /></p>
最新发布
05-19
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值