算法思想:
1. 用户输入一个正整数n
2. 循环查找所有满足条件的组合
3. 在循环体中判断第一个数是否是素数,
如果是素数,则判断n除以i是否是正整数,如果是正整数,就查找第二个素数
4. flag为0:表示输入的正整数n不是两个素数之积
flag为1:表示输入的正整数n是两个素数之积
注意:加减乘除都可以,只需要将 *** 作符变一下就行。
#include
// 判断素数
int isPrime(int n)
{
int i, primeNum = 1;
for(i = 2; i <= n / 2; ++i)
{
if(n % i == 0)
{
// 不是素数
primeNum = 0;
break;
}
}
return primeNum;
}
int main()
{
// 计算一个数是两个素数之积
int n,i,flag = 0;
printf("输入正整数: ");
scanf("%d",&n);
for(i = 2; i <= n/2; ++i)
{
// 检测判断
if(isPrime(i) == 1)
{
if(n % i == 0)
{
// 可以将/改成你做需要的操作符
if(isPrime(n / i) == 1)
{
printf("%d = %d * %d\n",n,i,n / i);
flag = 1;
}
}
}
}
if(flag == 0)
{
printf("%d 不能分解为两个素数。
",n);
}
return 0;
}
运行结果:
1. 当n=6时
2. 当n=11时
3. 当n=15时
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)