25、用筛法求1-1000以为的素数
//用筛法求1-1000以为的素数
#include<iostream>
#include<iomanip>
#include<stdlib.h>
#include<math.h>
using namespace std;
bool isprime(int n)
{
float count = 0;
count = sqrt(float(n));
for(int i=2; i<=count; i++)
{
if(n%i==0)
return false;
}
return true;
}
int main()
{
int a[1001]={0},i,j,k,n=2;
for(i=1; i<=1000; i++)
{
a[i] = i;
}
/* for(j=0; j<30; j++)
{
cout << a[j] << setw(3);
}*/
for(k=2; k<=1000; k++)
{
if(isprime(a[k]))
{
//while(n*(k+1)-1<1000)
while(n*k<=1000)
{
//a[n*(k+1)-1] = 0;
a[n*k] = 0;
//cout << "a[" << n*(k+1)-1 << "]" << a[n*(k+1)-1] << " ";
n++;
}
}
else
{
a[k] = 0;
}
}
for(j=2; j<=1000; j++)
{
if(a[j] != 0)
cout << a[j] << setw(4);
}
system("pause");
return 0;
}
26、判断某一年是否闰年
//判断某一年是否闰年
#include<iostream>
#include<stdlib.h>
using namespace std;
bool isLeapYear(int n)
{
if(n%4 == 0)
{
//cout<<"普通闰年"<<endl;
if(n%400 == 0)
{
cout << "世纪闰年" << endl;
}
else
{
cout<<"普通闰年"<<endl;
}
return true;
}
else
{
cout << "不是闰年" << endl;
return false;
}
}
int main()
{
int n;
cin >> n;
//if(isLeapYear(n));
isLeapYear(n);
system("pause");
return 0;
}
总结
1、用筛法求1-1000以为素数的编程思想:给数组a[1000]赋值0-1000,把不是素数的值置零,输出的非零值就是素数;把a[1] - a[1000] 对应 1-1000会有利于数组下标的处理;参考代码把数组初始化为1,非素数值置零,最后输出数组下标;
2、setw()函数在库iomanip中;