分行输出素数,每行五个,输出错误
本帖最后由 djdgf4 于 2022-4-6 12:55 编辑#include <stdio.h>
#include <math.h>
int main()
{
int n,i,k,m=0;
for(n=2;n<1000;n++)
{
k=sqrt(n);
for(i=2;i<=k;i++)
{ if(n%i==0)break;
if(i>=k+1)
printf("%d\t",n);
m=m+1;
if(m%5==0) printf("\n");
}
}
return 0;
}
输出结果显示?
2 3 5
7 11
13
17 19
23
29 31
37 41
43
47
53
59 61
67 71
73
79
83
89
……
907 911
919
929
937 941
947
953
967 971
977
983
991
997 #include <stdio.h>
#include <math.h>
int main()
{
int n,i,k,m=0;
for(n=2;n<1000;n++)
{
k=sqrt(n);
for(i=2;i<=k;i++)
{
if(n%i==0)
break;
}
if(i>=k+1)
{
printf("%d\t",n);
m=m+1;
if(m%5==0)
printf("\n");
}}
return 0;
} 这里没有花括号包住,导致不管满不满足,每次m都会+1 用一种更效率的算法(埃氏筛选法):
#include <stdio.h>
#define N 1000
int main()
{
int isPrime, count = 0;
for (int i = 2; i <= N; i++)
isPrime = 1;
for (int i = 2; i <= N; i++)
{
if (isPrime)
{
printf("%d\t", i);
if (++count % 5 == 0)
printf("\n");
for (int j = i * 2; j <= N; j += i)
isPrime = 0;
}
}
return 0;
}
本帖最后由 yzmx 于 2022-4-6 09:10 编辑
#include <stdio.h>
#include <math.h>
int main()
{
int n,i,k,m=1;
for(n=2;n<1000;n++)
{
k=sqrt(n);
for(i=2;i<=k;i++){
if(n%i==0) break;
}
if(i>=k+1){
printf("%d\t",n);
m=m+1;
}
if(m%6==0) {
printf("\n");
m=1;
}
}
return 0;
}
页:
[1]