菜鸟求一个C语音题目
输出1到1000的素数并且求出它们的和~~~~
[解决办法]
#include<stdio.h>
int main()
{
int i,j,count=0,sum=0;
for(i=1;i<=1000;i++)
{
for(j=2;j<i;j++)
{
if(i%j==0) break;
}
if(j>=i)
{
count++;
sum+=i;
printf("%d ",i);
}
}
printf("sum=%d",sum);
return 0;
}
[解决办法]
这题没什么难度,在下用顺序表来优化下,典型的空间换时间,呵呵:
#include<stdio.h>
#include<math.h>
int main()
{
int count=1,list[500],flag,sum=0;
register int i,j;
list[0]=2;
for(i=3;i<1000;i+=2)
{
flag=1;
for(j=0;j<count&&list[j]<sqrt(i)+1;j++)
if(!(i%list[j]))
{
flag=0;
break;
}
if(flag)
list[count++]=i;
}
printf("小于1000的素数:\n");
// 升序输出
/*for(i=0;i<count;i++)
{
printf("%d\t",list[i]);
sum+=list[i];
}*/
// 降序输出
while(count>0)
{
printf("%d\t",list[--count]);
sum+=list[count];
}
printf("\nsum=%d\n",sum);
return(0);
}