C++一道题,求编程...

来源:百度知道 编辑:UC知道 时间:2024/06/16 07:12:53
将小于n的所有个位数不等于9的素数在屏幕上打印出来,n的具体值从键盘输入.
要求:每行输出10个数,分行输出.

》代码及注释:》》:
#include<iostream>
#include<math.h>
#include<iomanip>
using namespace std;
int main(void)
{
int i,end,j,k,n=1;
cout<<"请输入一个不小于2的正整数:"<<endl;
cin>>end;
cout<<"2到"<<end<<"之间满足条件的素数有:"<<endl;
for(i=2;i<=end;i++)
{
k=sqrt(i);
for(j=2;j<=k;j++)//注释在下面
if(i%j==0)break;//当一个数i为素数,这个循环结束后j的值为k+1
if(j>k&&i%10!=9)//“j>k”表明i是素数,i%10得到i的个位数。
{
cout<<setw(7)<<i;
if(n%10==0)//每行输出10个数
cout<<endl;
n++;
}
}
cout<<endl;
}
例如17是素数,因为它不能被2~16间任意一整数整除。因此判断一个整数m是否为素数,只需用2~m之间的每一个整数去除,如果都不能被整除,那么m就是一个素数。
其实可以简化,m不必被2~m-1之间的每一个整数去除,只需被2~根号m之间的每个数去除就可以了。例如判别17是否为素数,只需使2~4之间的每一个整数去除。为什么可以做如此简化呢?因为如果m能被2~m-1之间任意整数整除,如果这个数大于根号m,那这个数必定对应的还有一个比根号m小的因子(以16为例,2、8是它的因子,8大于4,2小于4)。
setw,其头文件是iomanip.h。如,s