|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
若一个自然数可以表示成两个素数乘积的形式,这个自然数就叫做半素数
我写的代码如下,isPrime函数是用来判断是不是素数的,isQAPrime函数是用来判断是不是半素数的
#include <stdio.h>
int isQAPrime(int num);
int isPrime(int n);
int main()
{
int num;
scanf("%d", &num);
if(isQAPrime(num))
printf("Yes\n");
else
printf("No\n");
return 0;
}
#include<math.h>
int isQAPrime(int num)
{
int i,j,flag=0;
int x=num;
for(i=2; i<=sqrt(x); i++)
{
if(x==1)
{
flag=1;
break;
}
if(isPrime(i)&&!(x%i))
{
x/=i;
i=2;
continue;
}
}
return flag;
}
int isPrime(int n)
{
int i,flag=1;
if(n==1||n==2) flag=1;
else
{
for(i=2; i<=sqrt(n); i++)
{
if(!(n%i))
{
flag=0;
break;
}
}
}
return flag;
}
经过我测试isPrime函数应该是没有问题的
不知道问题在哪,求解
- int isQAPrime(int num)
- {
- int i , j , flag = 0 ;
- for(i = 2 ; i <= sqrt(num) ; i ++) {
- if(num % i == 0) {
- if(isPrime(i) && isPrime(num / i)) flag = 1 ;
- break ;
- }
- }
- return flag ;
- }
复制代码
|
|