//==========================
//例1.用筛法判定素数
//==========================
#include <iostream>
#include <vector>
#include <fstream>
using namespace std;
//--------------------------
int main()
{
vector<int> prime(10000,1);
for(int i=2;i<100;i++) //构造素数集合
{
if(prime[i])
{
for(int j=i;i*j<10000;j++)
prime[i*j]=0;
}
}
ifstream in("sushu.txt");
for(int a;in>>a && a>=2 && a<10000;)
cout<<a<<" is "<<(prime[a]?"":"not")<<" a prime/n";
return 0;
}
//======================
//例2..若干个向量按长短排序
//======================
#include <iostream>
#include <sstream>
#include <fstream>
#include <vector>
#include <string>
//-------------------------------
using namespace std;
typedef vector<vector<int> > Mat; //注意这个空格一定要有,否则编译错误
//-------------------------------
Mat input();
void vsort(Mat& mat);
void output(const Mat& mat);
void main()
{
Mat mat=input();
vsort(mat);
output(mat);
}
//===============================
Mat input()
{
Mat b;
ifstream in("source.txt");
for(string str;getline(in,str);) //利用getline()获取输入流中的行数据
{
vector<int> vtmp;
int a;
for(istringstream sin(str);sin>>a;) //通过string流分解行中数据
vtmp.push_back(a); //向一维向量中追加元素
b.push_back(vtmp); //向二维向量中追加行向量
}
return b;
}
//--------------------------------
void vsort(Mat& mat) //指针传递参数
{
for(int i=1;i<mat.size();i++) //排序方法之一(递进排序)
for(int j=0;j<i;j++)
{
if(mat[i].size()<mat[j].size())
mat[i].swap(mat[j]);
}
}
//--------------------------------
void output(const Mat& mat) //二维向量输出
{
for(int i=0;i<mat.size();i++) //控制行
{
for(int j=0;j<mat[i].size();j++) //控制列
cout<<mat[i][j]<<" ";
cout<<endl;
}
}
//--------------------------------