注册 登录
编程论坛 C语言论坛

从键盘任意输入一个整数M,求1~M中有哪些数可以分为两个相等的素数之和。

w257326716 发布于 2020-05-25 23:37, 1996 次点击
#include <stdio.h>
#include <math.h>
int sushu(int n)
{
    int j,t;
    for(j=1;j<n;j++)
    {
        if(n%j==0)
        {
            t=0;
        }
    }
    if(n==j)
    {
        t=1;
    }
    return t;
}
void main()
{
    int m,i,x,p;
    printf("请输入m的值:  ");
    scanf("%d",&m);
    printf("可以分为两个相等素数之和的数有:\n");
    for(i=2;i<=m;i=i+2)
    {
        p=i/2;
        x=sushu(p);
        if(x==1)
        {
            printf("%-5d",i);
        }
    }
}


大佬帮忙,看下哪里错了,谢谢!
3 回复
#2
fulltimelink2020-05-26 06:51
t=0后面加break或者return
判断为非质数直接返回就行了,否则循环一直执行,最后只会返回1
#3
吹水佬2020-05-26 06:52
m = 素数1 + 素数2
m - 素数1 = 素数2
这个整数减一个素数结果也是一个素数
#4
forever742020-05-26 08:06
可以筛法求M/2以内的素数,再乘2输出。
1