#include<stdioh>
#include<mathh>
define true 1
define false 0
int issushu(int n)
{ int i;
if(n==0) return true;
for(i=2;i<sqrt(n);i++)
if(n%i==0) turn false;
return true;
}
void main()
{ int j;
for(j=0;j<=100;j++)
if(issushu(j)) printf("%d",j);
}
=IF(AND(A1>4,A1=INT(A1)),IF(OR(INT(A1/ROW(INDIRECT("2:"&INT(SQRT(A1)))))ROW(INDIRECT("2:"&INT(SQRT(A1))))=A1),"合数","质数"),IF(OR(A1={2,3}),"质数","合数"))
数组公式:ctrl+shift+enter确定公式
#include<iostream>
using namespace std;
bool IsPrimeNum(int n); //判断自然数n 是否是质数
const int max = 5 ; //表示数组的元素个数的最大值
int main()
{
int a[max]; // 定义一个有max个元素的数组
int i;
cout<<"请输入"<<max<<"个自然数:"<<endl;
for(i=0;i<max;i++)
{
cin>>a[i]; //输入max个数据
}
cout<<"输入的数据中为质数的有:"<<endl;
for(i=0;i<max;i++)
{
if(IsPrimeNum(a[i])) //如果是质数
{
cout<<a[i]<<endl;
}
}
return 0;
}
bool IsPrimeNum(int n) //判断自然数n 是否是质数
{
int i;
bool flag = true; //质数标志,ture为质数
if(n < 2) //0 和 1 既不是质数也不是合数
{
flag = false;
}
else
{
for(i = 2; i < n; i++) // 此处求质数方法可以改进
{
if(n%i == 0)
{
flag = false; //检测到不是质数则退出for循环
break;
}
}
}
return flag; //返回是否是质数的标志
}
测试结果为:
请输入5个自然数:
2 3 4 5 7
输入的数据中为质数的有:
2
3
5
7
Press any key to continue
#include<stdioh>
int IsPrime(int n)
{
int i;
for(i=2;i<n;i++)
if(n%i==0) return 0;
else continue;
return 1;
}
int Sum(int n)
{
int i,sum=2;
if(n<2)return 0;
else if(n==2)return 2;
else
{
for(i=3;i<=n;i+=2)
{
sum+=IsPrime(i)i:0;
}
return sum;
}
}
main()
{
int n;
printf("输入一个最大数:\n");
scanf("%d",&n);
printf("比%d小的所有质数之和SUM=%d\n",n,Sum(n));
getchar();
}
#include<stdioh>
int sushu(int z);/函数声明最好放在外面,放到文件前端/
void main()
{
int b,a;
printf("enter a date:\n");
scanf("%d",&b);
a=sushu(b);
if(a==0||b==0)
printf("no\n");
else
printf("yes\n");
}
int sushu(int z)
{
int i , j;/i和返回值要分开,i要做循环标尺的/
for(i=2;i<z;i++)
{
if(z%i==0)
{
j=0;
break;/一旦发现不是素数,跳出for循环/
}
else
j=1;/如果用i,就是个死循环,如果是素数,每次你把i=1后for循环一直继续/
}
return j;
}
int
isprime(int
m)
{
int
i,flag=0;
int
squareRoot=sqrt(m);
if(m<=1)
{
flag=0;
}
for(i=2;i<=squareRoot&&flag;i++)
{
if(m%i==0)
{
flag=0;
}
}
return
flag;
}
这个地方的flag的值从头到尾都是0,就没变过,是不是要把int
flag=0改成int
flag=1
Private Sub Form_Click()
total = 0 '用于计数有多少个质数
For i = 2 To 100 '质数从2开始
For j = 2 To Sqr(i)
If i Mod j = 0 Then Exit For
Next j
If j > Sqr(i) Then
total = total + 1
Print i;
If total Mod 10 = 0 Then Print '打印10个换行
End If
Next i
Print "共有" & total & "个质数"
End Sub
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)