#include
int main()
{
printf("请输入一个数:");
int a;
scanf("%d",&a);
printf("\n %d = ",a);
for(int i=2;i<=a;)
{
if(a%i==0&&i!=a)
{
printf("%d x",i);
a=a/i;
}
else if(a%i==0&&i==a)
{
printf("%d \n",i);
a=a/i;
}
else
i++;
}
}
其实这个问题很简单。只是一个数学知识而已嘛,首先你要明白什么是素数:
素数也叫质数
即在正整数中,除了1与本身之外没有其他约数的数(1除外)。
如2,3,5,7,...
明白了素数,现在是不是很简单啦?
1. 接收一个用户的输入:scanf("%d",&num);
2.就循环除从2到num-1之间的数
现在应该自己可以写出来了吧!祝你成功!
我用的VS2010,通过。
#include
#include "StdAfx.h"
//#include
#include
#include
#include
#include
const int l=20;
int isprime(int a) //素数检测
{
for(int i=2;i<=sqrt((float)a);i++)
if(a%i==0)
return 0;
if(a==1) return 0;
if(a==2) return 1;
return 1;
}// 1-素数,0-不是素数
int main()
{
char m[l]; //要输入的数m
int j,L,m_[l];
printf("Input a natural number:\n");
for(;;) //循环位输入字符并判断是不是数字
{gets(m);
L=strlen(m);
for(j=0;j{if(isdigit(m[j])==0)
{
printf("Please input a number!\n");
break;
}
}
if(j==L)
break;
}
for(j=0;jm_[j]=m[j]-48; //字符转换为数字
int M=0;
for(j=0;jM+=(m_[j]*pow((float)10,(L-j-1))); //还原数字
//至此,M为输入的数字。
printf("所有素因数是:\n");
int temp=0;
for(j=1;j<=M;j++)
if(M%j==0) //此层判断是不是因子
if(isprime(j)==1) //判断素数
{printf("%d ",j);
temp++;
}
if(temp==0)
printf("NULL");
printf("\n");
system("PAUSE"); //系统暂停,外部调用时显示结果
return 0;
}
#include
int main(void)
{
int num;
int i,j;
printf("输入一个整数\n");
scanf("%d",&num);
printf("1\n");//因为1肯定是的
for(i=1;i{
if(0 == (num%i))
{
for(j=2;j{
if(0 == (i%j))
{
break;
}
if((j == i-1)&&(0 != (i%j)))
{
printf("%d\n",i);
}
}
}
}
return 0;
}
随手写的,不知道有么有错误,大致逻辑就是这样的