我们先了解什么是素数:
素数又称质数。所谓素数是指除了 1 和它本身以外,不能被任何整数整除的数,例如17就是素数,因为它不能被 2~16 的任一整数整除。
问题:
从键盘上输入一个整数n,输出所有小于等于n的素数。所谓素数是指:除了1和它背身以外不能被其他整数整除的数;
例如:
输入:50
输出:2 3 5 7 11 13 17 19 23 29 31 37 41 43 47
代码:
// shuchusushu.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include <iostream>
using namespace std;
int prime(int x){
for(int i= 2;i< x ; i++){
if(x%i == 0)
return 0;
}
return 1;
}
int _tmain(int argc, _TCHAR* argv[])
{
int m,k=0;
int arr[2000]={0};
printf("输入50到2000之间的整数: ");
cfu:
scanf("%d",&m);
if (m >= 50 && m <= 2000)
{
//判断在m以内有素数
for (int i =2;i < m; i++)
{
if (prime(i)==1){
printf("%d 是素数\n",i);
arr[k++]= i;
}else{
printf("%d 不是素数\n",i);
}
}
}else{
printf("输入50到2000之间的整数");
goto cfu;
}
cout << "K的值: "<< k << endl;
for (int i = 0;i < k-1;i++)
{
for (int j = 0;j < k-1-i;j++)
{
if (arr[j] < arr[j+1] )
{
int temps = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temps;
}
}
}
printf("10个数排序:");
for (int i = 0;i< k; i++)
{
printf("%d ",arr[i]);
}
while(1);
return 0;
}
代码:如果需要区间的则在判断if (m >= 50 && m <= 2000)处增加区间即可。
该文章属于:计算机技术网原创
转载请注明标题:C语言-求输入整数n,所有小于等于n的素数-计算机技术网
转载请注明出处:https://www.ctvol.com/c-cdevelopment/2261.html