1.判断一个数是否是素数
int main(){
int x;
int isPrime=1;//是素数
printf("请输入一个整数:");
scanf("%d",&x);
for (int i = 2; i <x ; ++i) {
if(x%i==0){
isPrime=0;//不是素数
break;
}
}
if(isPrime==1){
printf("是素数");
}else{
printf("不是素数");
}
}
2.找出100以内的素数
int main(){
int x;
//int isPrime=1; 这句不能写在这里,因为每次判断一个新的x,isPrime需要设置重新初始化为1
for (x = 1; x <=100 ; ++x) {
int isPrime=1;
int i;
for (i = 2; i <x ; ++i) {
if(x%i==0){
isPrime=0;
break;
}
}
if(isPrime==1){
printf("%d ",x);
}
}
}
3.找出前50个素数
for写法
int main(){
int x;
int cnt=0;
//int isPrime=1; 这句不能写在这里,因为每次判断一个新的x,isPrime需要设置重新初始化为1
for (x = 1; cnt<50 ; ++x) {
int isPrime=1;
int i;
for (i = 2; i <x ; ++i) {
if(x%i==0){
isPrime=0;
break;
}
}
if(isPrime==1){
cnt++;
printf("%d ",x);
}
}
}
while写法
int main(){
int x=1;
int cnt=0;
//int isPrime=1; 这句不能写在这里,因为每次判断一个新的x,isPrime需要设置重新初始化为1
while(cnt<50){
int isPrime=1;
int i;
for (i = 2; i <x ; ++i) {
if(x%i==0){
isPrime=0;
break;
}
}
if(isPrime==1){
cnt++;
printf("%d ",x);
}
x++;
}
}
判断时候能被已知的且<x的素数整除
#include<stdio.h>
int isPrime(int x,int knowPromes[],int numberOfKnowPrimes);
int main(){
//const int number=100;
int prime[100]={2};
int count=1;
int i=3;
while(count<100){
if(isPrime(i,prime,count)){
prime[count++]=i;
}
i++;
}
for(i=0;i<100;i++){
printf("%d\n",prime[i]);
}
return 0;
}
int isPrime(int x,int knowPromes[],int numberOfKnowPrimes){
int ret=1;
int i;
for(i=0;i<numberOfKnowPrimes;i++){
if(x%knowPromes[i]==0){
ret=0;
break;
}
}
return ret;
}