本题要求输出2
到n
之间的全部素数,每行输出10
个。素数就是只能被1和自身整除的正整数。注意:1不是素数,2是素数。
输入格式:
输入在一行中给出一个长整型范围内的整数。
输出格式:
输出素数,每个数占6位,每行输出10个。如果最后一行输出的素数个数不到10个,也需要换行。
输入样例:
10
输出样例:
2 3 5 7
这里需要注意的是,题目中提到的是2到n之间的数,所以可以不判断小于等于1的情况,也不会出错,具体代码如下:
#include <stdio.h>
#include <math.h>
int prime(int x)
{
int limit = 0;
int i = 0;
//其他整数的素数判断
limit = sqrt(x);
//限制条件,整数是否存在其他因子
for(i = 2; i <= limit; i++)
{
if(x % i == 0)
return 0;
}
//如若循环正常结束,说明不存在其他因子,该数为素数,返回1
return 1;
}
int main()
{
int n = 0; //n表示要输入的整数范围
int i = 0;
int count = 0;
scanf("%d", &n);
for(i = 2; i <= n; i++)
{
//判断是否为素数
if(prime(i) == 1){
printf("%6d", i);
count++; //记录素数的个数
if(count % 10 == 0) //满足一行有十个数就换行
printf("\n");
}
}
if(count < 10)
printf("\n"); //最后一行输出的素数个数不到10个,也需要换行
return 0;
}