500以内的最大素数。编程计算n(n<=500)以内的10个最大素数及其和,分别输出这最大的10个素数及其和。n的值要求从键盘输入。要求10个素数按从大到小的顺序输出。(总分占比50%)
程序运行示例1:
Input n(n<=500):10↙
7 5 3 2
sum=17
程序运行示例2:
Input n(n<=500):100↙
97 89 83 79 73 71 67 61 59 53
sum=732
输入提示信息:"Input n(n<=500):"
输入格式: "%d"
10个最大素数的输出格式:"%6d"
10个最大素数和的输出格式:"\nsum=%d\n"
我的代码:
#include<stdio.h>
#include<math.h>
int main()
{
int n,i,x,count=0;
int a[500];
int sum=0;
printf("Input n(n<=500):");
scanf("%d\n",&n);
for(x=0;x<=n;x++)
{
for (i=2; i<=sqrt(x); i++)
{
if (x % i == 0 )
{
a[count]=x;
count++;
sum+=x;
}
}
for(;count>=count-10;count--)
{
printf("%d\t",a[count]);
}
printf("\n sum=%d\n",sum);
}
return 0;
}
修改如下,供参考:
#include<stdio.h>
#include<math.h>
int main()
{
int n, i, x, count = 0;
int a[500], flg; //修改
int sum = 0;
printf("Input n(n <= 500):");
scanf("%d", &n); //scanf("%d\n", &n);修改
for (x = n, count = 0, sum = 0; count < 10 && x > 1; x--) //for (x = 0; x <= n; x++)
{
for (i = 2, flg = 1; i <= sqrt(x); i++) //修改
{
if (x % i == 0)
{
flg = 0; //修改
break;
//a[count] = x;
//count++;
//sum += x;
}
}
if(flg) //修改
{
printf("%6d", x);//修改
count++;
sum += x;
}
}
printf("\nsum = %d\n", sum);
return 0;
}