读书人

将小于N的全部个位不等于9的素数在屏幕

发布时间: 2013-07-11 15:38:46 作者: rapoo

将小于N的所有个位不等于9的素数在屏幕打印出来。
求助!
for(i=2;i<n;i++)
{
for(j=2;j<i;j++)
{
if(i%j==0||i%10==9)
break;
else
continue;
}
num++;
if(num<=10)
printf("%3d",i);
else
{
printf("\n");
num=1;
printf("%d",i);
}
}
主要想法是让不满足条件的数直接++进入下一轮是否是素数的判定,满足的才打印出来;我不知道在标红的地方怎么处理,才可以满足是素数的输出,否则进行判断下一个小于N的数是否是素数的判定?
谢谢各位!谢谢
[解决办法]


for(i=2;i<n;i++)
{
for(j=2;j<i;j++)
{
if(i%j==0
[解决办法]
i%10==9)
break;
else
continue;
}
if(i==j){ //判断该数字是否是素数
num++;
if(num<=10)
printf("%3d",i);
else
{
printf("\n");
num=1;
printf("%d",i);
}
}
}

[解决办法]
for(i=2; i<n; i++)
{
if( i % 10 != 9)
//把个位数的判断放在这里更合适
//这样更容易理解,而且减少了除法次数
{
int is_prime = 1;
//虽然结束后可以用j == i来判断是否是素数
//但用一个带有合适名字的标志变量更好理解
//在循环中使用标志变量不一定会降低可读性,这里反而提高了可读性
for(j=2; is_prime && j<i; j++)
{
is_prime = ( i % j != 0 );
//如果觉得上一句不好理解
//也可以写成下面的形式
//if (i%j==0)


//{
// is_prime = 0;
//}
}
if (is_prime)//如果i是素数
{
num++;
if(num<=10)
printf("%3d",i);
else
{
printf("\n");
num=1;
printf("%d",i);
}
}
}
}

读书人网 >C语言

热点推荐