c语言,运行超时,找不出原因,如何解决?

题目:求给定正整数m以内的素数之和

#include<stdio.h>
main(){
int m,n=0,i;
scanf("%d",&m);
ss:
for(;m>=1;m--){
for(i=m/2+1;i>=1;i--){
if(m%i==0)goto ss;
else continue;
}
n=n+m;
}
printf("%d\n",n);
}

编译通过,运行超时

思路是将m从大到小一个一个求余,余数为零就m-1,用到嵌套循环。第一次用带标号的goto,书上说慎用,但不用我不知道怎么跳两层循环才好。我好菜。

我想要达到的结果:输入20,应该输出77

这是我的写法,你参考一下:

#include<stdio.h>
main() 
{
    int m, sum=0,count=0,i;
    scanf_s("%d", &m);
    for (int i=2; i<= m;i++) {
        count = 0;
        for (int j = 2; j < i;j++) 
        {
            if (i % j == 0)
                count++;
        }
        if(count==0) 
            sum+=i;
    }
    printf("%d\n", sum);
}

应该是嵌套的问题吧