使用for循环实现:验证“歌德巴郝猜想:任意一个大于等于4的偶数可写成两个素数之和”

#include <stdio.h>
//设置函数素数,若为素数则返回值为1,否则为0 
int sushu(int x)
{
    int i;
    for (i=2;i<x;i++)
    {
        if(x%i==0)
        {
            return 0;//判断该数是否拥有除去1和本身以外的因数 
        }
    }
    return 1;
 } 

int main() 
{
    int n,i;
    printf("please input an even number greater than or equal to 4\n");
    scanf("%d",&n);//一个大于等于4的偶数
    for (i=2;i<=n/2;i++)//此处的n/2是为了防止重复 
    {
        if(sushu(i) &&sushu(n-i))//同时满足i是素数,n-i也是素数时输出 
        {
            printf("%d=%d+%d\n",n,i,n-i);
        }
    }
    return 0;
}
这便是整体的代码
其中int sushu(int x)函数,就是判断一个数是否为素数,并用1表示是,0表示否,便于在主函数中进行计算

例如10可由

10=3+7

10=5+5

得到

或是大一点的数:188

188=7+181

188=31+157

188=37+151

188=61+127

188=79+109

这题主要考察我们对素数的判别

    for (i=2;i<x;i++)
    {
        if(x%i==0)
        {
            return 0;//判断该数是否拥有除去1和本身以外的因数 
        }
    }
    return 1;

接下来我们用一个小题目来帮助我们对素数加深了解

输出1-n之间的所有素数

#include <stdio.h>
int main()
{
    int n,i,j,flag;
    printf("please input a number\n");
    scanf("%d",&n);
    for (i=2;i<=n;i++)
    {
        flag =1;
        for (j=2;j<i;j++)
        {
            if (i%j == 0)
                flag=0;
         } 
        if (flag ==1)
             printf("%d ",i);
    }
    return 0;    
}
  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值