#include<stdio.h>
#include<math.h>
int flag[1000];
int main()
{
int a;
int i,j;
while(1){
scanf("%d",&a);
flag[0]=flag[1] = 1;
for(i = 2; i <= sqrt(a); i ++)
{
if(flag[i] == 0 )
{
for( j = i + i; j <= a; )
{
flag[j] = 1;
j = j + i;
}
}
}
if(flag[a] == 0)
printf("prime\n");
else
printf("composote\n");
}
return 0;
}
将构建一个标记数组,将2~A所有数进行标记,然后看 输入数所对应的位置有没有被标记,如果被标记过了,就是合数,否则是素数
时间复杂度应该还是比较高,还需要优化但是目前输出结果来看,是对了