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

这么将100分解成两个质数的和

a15171112681 发布于 2020-05-06 15:39, 1414 次点击
谢谢
3 回复
#2
lin51616782020-05-06 16:01
比较简单
筛法找出100以内的素数
然后对每一个素数 查表检查 100-素数 是不是素食
就完事了
#3
吕孟伟2020-05-06 18:11
程序代码:
#include<stdio.h>
int isprime(unsigned int val);
int main(void)
{
    unsigned int i;
    printf("100 is decomposed into two prime numbers:\n");
    for(i=2; i <= 100; ++i){
        if(isprime(i) && isprime(100-i)){
            printf(" %d and %d\n", i, 100-i);
        }
    }
    return 0;
}

int isprime(unsigned int val)
{
    unsigned int i;
    for(i=2; i!=val; ++i){
        if(0 == val%i){
            break;
        }
    }
    if(i >= val){
            return 1;
        }else{
            return 0;
        }
}
#4
纯蓝之刃2020-05-07 18:54
按照lin5161678的思路编写的,3楼的太暴力了
程序代码:
#include<stdio.h>

#define MAX 100

int main()
{
    int a[MAX],num,i,j=0,k;

    for(num=2; num<MAX; num++)  //筛法找出100以内的素数
    {
        for(i=2; i<num; i++)
        {
            if(num%i==0)
                break;
        }
        if(i==num)
            a[j++]=num;
    }

    for(i=0;i<j;i++)        //对每一个素数 查表检查 100-素数 是不是素数
    {
        if(a[i]>MAX/2)
            break;

        for(k=0;k<j;k++)
        {
            if(100-a[i]==a[k])
            {
                printf("%d,%d\n",a[i],a[k]);
                break;
            }
        }
    }

    return 0;
}
1