求救,为什么这个程序不能输出啊,主要是输出两个素数
本帖最后由 匿名 于 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;
} 楼主,你在这个 IsPrime() 函数想要一个什么效果? jackz007 发表于 2021-11-30 16:06
楼主,你在这个 IsPrime() 函数想要一个什么效果?
判断i n-i是不是素数,如果是的化就输出 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]