求助一个最简单的算法题
请写一个C程序,将3-100以内的所有素数保存到一个链式线性表中,最后按顺序将单链表中的所有数据输出到屏幕上。最好能给讲解下!感激不尽
//////////////////////////////////////////////////////////
//PrimeNum()公有成员函数
//把3-100之间的素数全部加入到链表中去
//////////////////////////////////////////////////////////
template<class T>
void List<T>::PrimeNum()
{
int f=1;
LinkNode<T>* rear=first;
for(int i=3;i<=100;i++)
{
f=1;
for(int j=2;j<=i-1;j++)
{
if(i%j==0) //如果找到一个j是i能整除的
f=0; //则i不是素数
};
if(f==1) //如果是素数
{ //把该素数加入链表
cout<<i<<" ";
LinkNode<T>* newNode=
new LinkNode<T>(i);
rear->link=newNode;
rear=newNode;
};
};
};
////////////////////////////////////////PrimeNum()函数结束
PS:代码里用的链表是带附加头结点的链表,first是附加头结点的指针.其实算法主要思想就是,穷举,判断是否是素数,如果是就新建链表结点,再把结点加入其中.