》代码及注释:》》:
#include
#include
#include
using namespace std;
int main(void)
{
int i,end,j,k,n=1;
cout<<"请输入一个不小于2的正整数:"<
cout<<"2到"<
{
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<
cout<
}
}
cout<
例如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。如,setw(5)的作用是为后面的输出项预留5列,如输出长度不足5列,自动向右靠齐,如果超过5列,则按实际长度输出。
》代码2(用函数实现)》》:
#include
#include
#include
using namespace std;
void primer(int n)
{
int i,s=1,t;
int k;
k=sqrt(n);//sqrt函数的函数头是math.h
for(i=2;i<=k;i++)
{
t=n%i;
if(t!=0)t=1;
s=s*t;
}
i=1;
if(s&&n%10!=9)
{
cout<
}
}
int main(void)
{
int end,j;
cin>>end;
for(j=2;j<=end;j++)
primer(j);
return 0;
}
取除以10的余数可以得到各位数
#include
int main()
{
int a,b;
while(scanf("%d %d",&a,&b)!=EOF)
{
printf("%d\n",a+b);
}
return 0;
}
#include
void main()
{
int i,j,n,count=0;
cout<<"input n:";
cin>>n;
for(i=2;i<=n;i++)
{
for(j=2;j<=i/2;j++)
{
if(i%j==0)
break;
}
if(j>i/2&&i%10!=9)
{
cout<count++;
if(count==10)
{cout<
}
cout<
#include
#include
using namespace std;
void f(int);//判断个位数是否小于9
void g();//实现每行输出10个数,分行输出
int main( int argc,char*argv[])
{
int a=0;//中间变量
int nMax=0;
cout<<"请输入要求的最大数:";
cin>>nMax;
int nCounter=0;//计数器
for(a=nMax;a>0;a--)
{
int b=a/2;
for(int i=1;i<=b;i++)//比如输入一个数340,他的一半是175,用340分别处以1到175的整数,减少运算量
{
if(0==a%i)//余数为0说明能够整除
{
nCounter++;
}
}
if(1==nCounter)//一个素数只能被1和自身整除,上面的循环中已经把自身刨去了,所以考虑只能被1整除的就是素数
f(a);
nCounter=0;//计数器置0,进行下一次的计算
}
return 0;
}
void f(int _max)
{
int number=0;
number=_max%10;//取个位数字
if(number!=9)
{
cout<<_max;
g();
}
}
void g()
{
int i=0;
cout<<'\t';
i++;
if(9==i)
{
i=0;
cout<
}