Anonymous 发表于 2021-11-30 15:21:39

求救,为什么这个程序不能输出啊,主要是输出两个素数

本帖最后由 匿名 于 2021-11-30 15:30 编辑

#include<stdio.h>
void IsPrime(int x,int y)
{int i;
for(i=2;i<x;i++)
if(x%i==0||y%i==0)break;
if(i==x)
printf("%d,%d",x,y);}
int main(void)
{int i,n;
printf("请输入不小于6的偶数:");
do
scanf("%d",&n);
while(n>=6&&n%2==0);
for(i=1;i>=3&&i<=n/2;i++)
IsPrime(i,n-i);
return 0;
}

jackz007 发表于 2021-11-30 16:06:06

      楼主,你在这个 IsPrime() 函数想要一个什么效果?

9e111 发表于 2021-11-30 19:18:57

jackz007 发表于 2021-11-30 16:06
楼主,你在这个 IsPrime() 函数想要一个什么效果?

判断i n-i是不是素数,如果是的化就输出

jackz007 发表于 2021-11-30 19:43:45

9e111 发表于 2021-11-30 19:18
判断i n-i是不是素数,如果是的化就输出

#include <stdio.h>

int IsPrime(int n)
{
      int i , r = 0               ;
      if(n % 2 && n > 2) {
                for(r = 1 , i = 3 ; i * i < n + 1 ; i += 2) {
                        if(! (n % i)) {
                              r = 0 ;
                              break ;
                        }
                }
      } else if(n == 2) r = 1       ;
      return r                      ;
}

int main(void)
{
      int i , n                                                                                        ;
      for(;;) {
                printf("请输入一个大于 6 的整数 :")                                                   ;
                scanf("%d" , & n)                                                                        ;
                if(n > 6 && ! (n % 2)) break                                                             ;
                else printf("\n")                                                                        ;
      }
      for(i = 1 ; i < n / 2 + 1 ; i ++) if(IsPrime(i) && IsPrime(n - i)) printf("%d %d\n" , i , n - i) ;
}
      编译、运行实况:
D:\00.Excise\C>g++ -o x x.c

D:\00.Excise\C>x
请输入一个大于 6 的整数 :40
3 37
11 29
17 23

D:\00.Excise\C>
页: [1]
查看完整版本: 求救,为什么这个程序不能输出啊,主要是输出两个素数