mooc上的题求简化我的代码,mooc上的题求简化我的代码,mooc上的题求简化我的代码,mooc上的题求简化我的代码。
#include
int isPrime(long n);
int main(int argc, char const *argv[])
{
int n, m, count;
long l, sum;
while(1) {
scanf("%d%d", &n, &m);
if (n > 0 && n <= m && m <= 200) break;
printf("Invalid input, try again.\n");
}
count = 0; sum = 0; l = 2;
do {
if (isPrime(l)) {
count ++;
if (count >= n) sum += l;
}
l++;
} while (count < m);
printf("%d\n", sum);
return 0;
}
int isPrime(long n)
{
int i;
if (n == 2)
return 1;
for (i = 2; i*i <= n;i++)
if (n % i == 0)
return 0;
return 1;
}
这个题,,,我给个思路吧
【1】计算出m个素数,,存放到一个数组中 array[m];
怎么求,,你的代码里体现出来了。
【2】取出,第n-m的数,求和即可。
(感觉貌似没简化多少,,哎,,起始你把你那个程序的大括号,该去的一去,,能简化到30行差不多)
【建议】最后有个建议,,你这个编辑器是devc++?,它有个问题,(我是受害者,不知道现在更新了没有)
int n;
scanf("%d", &n); //假如输入5
int array[n];
printf("%d\n", array[0]);
这句代码是错误的,,不过devc++可以编译运行,,,,还有篇文章。http://tieba.baidu.com/p/3390092109
一开始建议使用VS系列比较好,可能不好适应